System.Voidとは何ですか? 質問する

System.Voidとは何ですか? 質問する

宣言されたメソッドはvoid何も返さないことはわかっています。

しかし、C# では、 はvoid単なるキーワードではなく、実際の型であるようです。は のエイリアスであり、は の
voidエイリアスです。System.VoidintSystem.Int32

なぜそのタイプを使用できないのですか? 意味をなさないかもしれませんが、これは論理に関するいくつかの考えにすぎません。

どちらでもない

var nothing = new System.Void();

void(エイリアスではないですか?)を使用する必要があると書かれています)
または

var nothing = new void();

コンパイルします。

次のようなものも使用できません:

void GiveMeNothing() { }
void GiveMeNothingAgain()
{
    return GiveMeNothing();
}

それで、 のポイントは何でしょうかSystem.Void?

ベストアンサー1

からドキュメンテーション:

構造Void体は名前空間で使用されますSystem.Reflectionが、一般的なアプリケーションではほとんど役に立ちません。Void構造体には、すべての型がクラスから継承するメンバー以外のメンバーはありませんObject

コード内でそれを使用する理由は実際にはありません。

また:

var nothing = new void();

これはコンパイルできません。「動作する」というのはどういう意味ですか?

アップデート:

メソッドはvoid Foo()何も返しません。System.Voidは、(Reflection を通じて)「そのメソッドの戻り値の型は何ですか?」と質問した場合に、答えが得られるようにするためにありますtypeof(System.Void)。 代わりに を返せない技術的な理由はありませんnullが、そうすると Reflection API に特殊なケースが導入されることになるため、可能な場合は特殊なケースは避ける必要があります。

最後に、プログラムに式 を含めることは違法ですtypeof(System.Void)。しかし、それはコンパイラ強制これは CLR の制限ではなく、制限です。実際に、許可されたものを試してtypeof(void)デバッガーでその値を確認すると、合法である場合と同じ値であることがわかりますtypeof(System.Void)

おすすめ記事