Tag: 不可一致的

鸭编入C#编译器

注意:这不是一个关于如何在C#中实现或模拟鸭子打字的问题。 几年来,我的印象是某些C#语言特性在语言本身定义的数据结构上是压缩的(对我来说,这总是看起来像一个奇怪的鸡鸡蛋)。 例如,我的印象是, foreach循环只能用于实现IEnumerabletypes。 从那时起我就开始理解C#编译器使用鸭子打字来确定一个对象是否可以在foreach循环中使用,寻找一个GetEnumerator方法而不是IEnumerable 。 这消除了鸡蛋和鸡蛋的难题,这很有意义。 我有点困惑,为什么这不是似乎与using块和IDisposable的情况下。 编译器是否有任何特殊原因不能使用鸭子打字和查找Dispose方法? 这种不一致的原因是什么? 也许在IDisposable的背后还有其他的东西呢? 讨论为什么你有一个Dispose方法没有实现IDisposable的对象超出了这个问题的范围:)