簡體   English   中英

如何在C#中使非值類型可以為空?

[英]How do I make non-value types nullable in C#?

例如:

public class Stereo {
   public Speaker? LeftSpeaker;
   public int? Volume;
}

int? 工作正常,但我無法讓揚聲器可以為空。 這對谷歌來說實在是太難了,我覺得這很簡單......

你為什么要那樣? 可以設置非值類型(即引用類型)並將其與null進行比較。

添加Nullable<T>過引用類型的對象會產生空性的兩層包裝; 無意義的復雜性,因此是不允許的。

很簡單。 “非值”類型實際上在.NET中稱為引用類型,並且可以自動為空。 只需改變您的代碼:

public class Stereo {
   public Speaker LeftSpeaker; // ? removed for ref type
   public int? Volume;
}

狂野贓物:

public class Stereo { 
   public Speaker LeftSpeaker; 
   public int? Volume; 

   public Stereo() {
       LeftSpeaker = null;   // Mission accomplished.
   }
} 

已經有很多魚了 - 但如果你想學習如何釣魚,我建議你看看Jon Skeet的書中的C#深度 第4.1章到第4.5章正在討論C#中“無效概念”的所有方面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM