7

C#は主にstronglt型ですが、いくつかの奇妙な動作があります。

たとえば、独自の列挙子クラスをロールする場合、IEnumerableを実装する必要はなく、GetEnuerator()と呼ばれるメソッドを実装するだけで済み、それをforeach上書きすることはできます。

一部のLinqサポートについても同じことが言えます。いくつかのselect whereメソッドなどを提供するだけで、独自のLinqプロバイダーを作成できます。

では、なぜusing(x){}ステートメントにIDisposableが必要なのですか?

フルフィルするための固定契約はなく、メソッドの一種のパターンしかないので、なぜlinqプロバイダーをそのように書くことができるのかわかります。

C#コンパイラ(または言語仕様)が、組み込みの言語構造の一部にはインターフェイスが必要であるが、他の構造には必要ないように設計されているのはなぜですか?

4

0 に答える 0