語法 T?
是 Nullable<T> 的縮寫,其中 T
是實值型別。 這兩種格式是可互換的。
參考來源 : https://docs.microsoft.com/zh-tw/dotnet/csharp/programming-guide/nullable-types/using-nullable-types
語法 T?
是 Nullable<T> 的縮寫,其中 T
是實值型別。 這兩種格式是可互換的。
以上聽不懂....開始調頻說人話中
一般 int x=範圍從 -2147483648 到 2147483647 的之間任何值指派給x
int x=56;
當需要為int實值型別加上Null 型別
int? x=null;
int? x=56;
可為 Null 的型別是 System.Nullable<T> 結構的執行個體。 可為 Null 的型別可以代表其基礎值型別的正確值範圍,再加上額外的 null
值。 例如,您可以將範圍從 -2147483648 到 2147483647 的任何值指派給 Nullable<Int32>
(發音為「Nullable of Int32」),或為它指派 null
值。
當需要將 null設定給 x時
int x = null;
編譯時 將產生下列錯誤....
int? x = null;
bool
指派下列值:true、false 或 null。 當您正在處理包含可能不會指派值之元素的資料庫和其他資料型別時,將 null
指派為數字或布林值型別的功能特別有用。 例如,資料庫中的布林值欄位可以儲存 true
或 false
的值,而它也可能是未定義的。
如下程式碼 :
bool Tag4 是說明命名 正常加上未使用 ? 是不帶 Null 實體型別 , 編譯會發生錯誤.
下列範例使用 HasValue
成員先測試變數是否包含值,再嘗試顯示它。
// 每個可為 Null 類型的執行個體皆有兩個公用唯讀屬性:
如果 HasValue 為 false,存取 Value 將會擲回 InvalidOperationException。
//本例使用 HasValue 成員先測試變數是否包含值。
int? x = 10;
if (x.HasValue)
//HasValue 是 bool 類型。 當變數包含非 Null 值時,它會設成 true。
{
Console.WriteLine("int? x = {0}",x.Value);
//Value 是與基礎類型相同的類型。 如果 HasValue 為 true,則 Value 包含有意義的值。 //如果 HasValue 為 false,存取 Value 將會擲回 InvalidOperationException。
}
else
{
Console.WriteLine("Undefined");
}
有事沒事多學,學習活在當下,做一件事情後,學會一件事就好。 JT