| ■No23460 (ネタ好き未記入 さん) に返信 > 仮に採用されるとなると、やはり言語仕様にはネストレベルが規定されるのでしょうか? > 無いと無限ループに陥る可能性があると思います。
以下のクラス定義は,C# / Common Type System (CTS) ともに許可されます.
class P<T> {} class C<U,V> : P<D<V,U>> {} class D<W,X> : P<C<W,X>> {}
この型定義には,ループ構造が存在しますが,エラーにはなりません. 循環する型定義が有用な場合があるので,単なるループだけではエラーにならないようになっています. ISO/IEC 23271:2006(E) の §9.2 Generics and recursive inheritance graphs に,エラーとする場合の判定アルゴリズムが書かれています. |