とにかく、それは良い習慣だと確信していますが、これがコンパイラによって強制される技術的/概念的な理由はありますか? それとも、美学だけを強化しているのでしょうか?
質問する
84 次
2 に答える
1
C# レイヤーの下でこの動作を行う理由はありません。IL レイヤーの拡張メソッドから始めて、静的クラスは存在しません (重要でない変更またはカスタム属性を除く)。
おそらくコードを明確にするために、言語設計者が行った選択です。根本的な理由から、このようにする必要はありません。
他にも同様の制限があります。たとえば、ネストされたクラスで拡張機能を定義することはできません。
于 2013-10-05T16:45:55.363 に答える
1
私の理解では、これは概念的な動きです。
静的クラスはメソッドの純粋なコンテナーのように機能し、それ自体はobjectを表しません。拡張メソッド自体は、入力を処理するだけのメソッドであり、オブジェクトの動作の一部のようには機能しません。
そのため、C# の性質上、それらは非常に似ていると思います。おそらくそれが、言語によってリンクされている理由です。
于 2013-10-05T16:48:39.797 に答える