|
1
84
首先,您的建议是编译器同时考虑“从内到外”和“从外到内”
同时
。也就是说,为了使您提出的功能正常工作,编译器必须同时推断表达式
因此,现在我们必须设计重载解决方案来识别这种特定情况。过载解决已经够难了。现在考虑一下类型推断的含义。 C#的设计使您在绝大多数情况下不需要进行双向推理,因为双向推理是 昂贵且困难 .我们 做 使用双向推理是 兰巴斯 ,我花了整整一年的时间来实现和测试它。在lambdas上获取上下文相关推理是 使LINQ工作所必需的 因此,获得双向推理正确的极高负担是值得的。
此外:为什么是
但是,让我们暂时搁置一下,考虑一下你的建议的其他优点。例如,您打算对此做些什么?
你不觉得
奇怪的
那个
你的建议基本上是 每个引用类型的表达式都有不同的行为,这取决于它是被使用还是被赋值 ,也就是说 超级混乱 。
现在,您可能会说,好吧,让我们用一种特殊的语法来消除类型的歧义
习惯于
从类型为
提及
和
有这样一种语法
.是的
基本上,根本问题是 类型不是C中的第一类# .你可以用类型做一些事情 只有 在编译时执行。没有:
哪里
最后,还有一个关于可能的正确性的论点。如果开发人员编写
后续问题:
方法组没有成员;你永远不会说:
因为
基本上,方法组被视为具有 价值 但是没有 类型 ,然后 可兑换性 规则确定哪些方法组可转换为哪些委托类型。
现在,如果您要论证一个方法组应该隐式地转换为
一个你没有问但似乎有密切关系的问题:
对考虑:
在这个被巧妙地称为“颜色问题”的场景中,C编译器设法解决了这个问题
|
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |