在C#中,我开始看到所有这些魔术方法都弹出了,而没有界面的支持。为什么选择这个?
让我解释。
以前在C#中,如果对象实现了该IEnumerable
接口,则该对象将自动被foreach
循环迭代。这对我来说很有意义,因为它由一个接口备份,并且如果我要Iterator
在要遍历的类中拥有自己的函数,则可以这样做,而不必担心它会神奇地意味着其他含义。
现在,显然,(不确定何时),不再需要这些接口。它只需要进行正确的命名转换即可。
另一个示例是通过使用一个确切 命名的方法来等待任何对象,该方法GetAwaiter
具有一些特定的属性。
为什么不像以前那样创建一个界面IEnumerable
或INotifyPropertyChanged
静态地备份这种“魔术”呢?
关于我在这里的意思的更多细节:
http://blog.nem.ec/2014/01/01/magic-methods-c-sharp/
魔术方法的优缺点是什么,在网上哪里可以找到有关为什么做出这些决定的任何信息?
async
/ 的接口await
,则该接口仅适用于.NET 4.5变得足够广泛而成为可行目标之后编写的代码……基本上就是现在。但是,将语法纯粹转换为方法调用后,我便可以await
在事实之后为现有类型添加功能。
foreach
从头开始循环的基本功能。有从未一直为对象实施的要求IEnumerable
进行foreach
工作。这样做只是惯例。