22

voidMicrosoft .NET Frameworkでは、戻り型は構造体であることに気付きました。なんで?

...
public void TestMethod()
{

}
...
4

1 に答える 1

28

フレームワークは、リフレクションで使用するreturntypeキーワードを表すために呼び出される値型を使用します。System.Voidvoid戻り値がvoidないことを意味しますが、それでも技術的には型であり、コードでそのように表現されるためには、構造(値型)またはクラス(参照型)のいずれかである必要があります。

例についてはを参照MethodInfo.ReturnTypeしてください。

フレームワークの設計者がSystem.Voidクラスではなく構造を作成することを選択した理由については、誰もが推測できますが、そもそも型で表す必要があります。他の最適化の中でも、参照ルックアップに通常関連する不要なオーバーヘッドを回避するためであるというコメントに同意します。

于 2012-07-16T05:47:31.837 に答える