日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

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

發布時間:2023/12/4 C# 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何理解 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 类型?的全部內容,希望文章能夠幫你解決所遇到的問題。

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