C# 主要是 stronglt 类型,但是,有一些奇怪的行为:
例如,当滚动您自己的枚举器类时,您不必实现 IEnumerable,您只需实现一个名为 GetEnuerator() 的方法,您仍然可以foreach
覆盖它。
一些 Linq 支持也是如此,您可以通过提供一些select
where
方法等来编写自己的 Linq 提供程序。
那么为什么using(x){}
声明需要 IDisposable 呢?
我确实明白为什么可以以这种方式编写 linq 提供程序,因为没有要完成的固定合同,只有一种方法模式。
为什么 C# 编译器(或语言规范?)的设计方式是某些内置语言结构需要接口,而其他语言结构不需要接口?