日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

如何理解 C# 中的 System.Void 类型?

發布時間:2023/12/4 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何理解 C# 中的 System.Void 类型? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

咨詢區

  • ordag

我知道方法聲明成 void 表示不返回什么東西,但我發現在 C# 中 void 不僅僅是一個關鍵詞,而且還是一個真實的類型。

void 是 System.Void 的別名,就像 int 的別名是 System.Int32 一樣,但為什么不允許直接使用Void類型呢?我覺得在邏輯上這是沒有任何問題的。

比如說:

var?nothing?=?new?System.Void();

或者

var?nothing?=?new?void();

或者

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

都是無法編譯的,那請問 System.Void 到底場景在哪里呢?

回答區

  • Cheng Chen

void / System.Void 和 int / System.Int32 是不同的,它是一種特殊的結構體,僅用于 反射 場景中,比如下面的例子:

class?Program {public?static?void?Main(string[]?args){Type?voidType?=?typeof(Program).GetMethod("Main").ReturnType;} }

在反射操作中,必須要有一種類型可以描述 Main 方法的返回值,這就是 System.Void 的應用場景。

  • Jon

根據 MSDN:https://docs.microsoft.com/en-us/dotnet/api/system.void?view=net-6.0 描述。

Void 結構落于 System.Reflection 命名空間,但在一般的程序開發中很少使用, Void 結構除了從 Object 上繼承來的所有類型之外,無任何東西。

所以說,你沒有任何理由需要在代碼中像下面這樣寫。

var?nothing?=?new?void();
  • llewellyn falco

我們在代碼中用 null 來替代 void 類型,代碼如下:

public?Type?GetType(object?o) {var?type?=?o?==?null???typeof(void)?:?o.GetType(); }

這樣就輕松實現了 空對象引用模型,也就省去了非常多的 空null 判斷,非常方便,接下來就可以這么寫:

GetType(o).GetProperties().Select(?.....

點評區

我覺得 Cheng Chen 大佬說到點子上了,我們在反射操作中,比如要用 System.Void 來承載那些 void 類型的返回值,學習了。

總結

以上是生活随笔為你收集整理的如何理解 C# 中的 System.Void 类型?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。