![]() |
1
5
你省略了第三个解释这个问题的选项:
在
(1)
,你已经宣布
在
(2)
,你已经宣布
这就是问题的根源。之间没有定义转换
你目前的想法是:
简短的回答是 编译器拒绝猜测 .
你想发生的事情会导致不可能发生的情况。例如,如果有第二个类也实现了
让我们重新评估您的代码:
这是可行的。有一个转换自
这是可行的。有一个转换自
这不管用。编译器没有来自的任何已知转换
编译器无法确定是否要将其转换为
正如我之前所说,编译器拒绝猜测。 此外,为了清楚起见,这将起作用:
所有这些任务都有效。
问题的关键在于编译器希望您
明确地
说明要将字符串转换为哪种类型。在您自己的示例中,您已经明确要求
|
![]() |
2
3
很清楚编译器的错误,是吗?
假设有另一个类实现了接口:
怎么会
或者反过来考虑:当您只有接口但根本没有实现它的类时(这在设计API时很常见),根本就没有转换。您的设计引入了一些静态绑定,从一个接口到它的具体实现,这是一件坏事。事实上,这使你
除此之外,我怀疑演员阵容在这里是件好事。通过一个隐含的结论,你暗示
每一个
字符串可以安全地转换为类,而不会丢失任何信息。例如,URI是否是类的有效表示形式?甚至你提供的
另一方面,期望字符串的构造函数要精确得多,并使其明确:
根据我的经验,只有少数情况下你真的需要一个内隐演员。您经常要做的是基于一些输入创建一些实例,并且
追加
该实例的更多数据。在您的示例中,这意味着
|
![]() |
3
0
因为参数是一个接口,您想调用
|
![]() |
A B · C#Excel自动调整列避免长文本时出错 5 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 5 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 5 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 5 月前 |