[英]What does the bool? return type mean?
我看到一個方法返回bool?
,有誰知道它的含義?
T?
是Nullable<T>
的C#語法快捷方式。 那么bool?
映射到Nullable<bool>
。 所以在你的情況下,它是一個結構,它可以是null
,或者具有bool
值。
如果Nullable<T>
為null
,則與引用類型為null有點不同。 它基本上是一個包含底層類型和布爾標志HasValue
。 但是運行時和C#語言都有點神奇,假裝具有HasValue==false
的Nullable
實際上是空的。 但有時候差異仍然存在。
底層類型可以隱式轉換為可空類型( bool
- > bool?
)。 要從可空類型中獲取基礎類型,您可以顯式轉換( (bool)myNullableBool
或使用Value
屬性( myNullableBool.Value
)。您應該在之前檢查null
,否則如果可以為null值,您將獲得異常是null
。
在C#中,“原始”類型不能包含空值:
int blah = null;
這會產生異常,因為'int'不能保存null值。
與double,float,bool,DateTime相同......
真的很好。 使用數據庫時會出現問題。 在數據庫中,您可以擁有可以為null的行,例如Age(即int)。
你如何在一個物體上持有那一行? 你的int不能保存null值,行可以為null。
出於這個原因,MS創建了一個新的結構,Nullable,你可以將一個“原始”類型(或結構)傳遞給該結構,使其可以為空:
Nullable<int> blah = null;
現在,這不會成為例外,該變量可以包含int和null。
因為Nullable太長了,MS創造了某種別名:如果你把'?' 在類型之后,它變得可以為空:
int? blah = null;
Nullable<int> blah = null;
這兩行完全相同,但第一行更容易閱讀。
這樣的東西:)
任何(非廢話1 ) 值類型后綴?
使它成為可以為空的類型:
int?
是一個可以為空的整數 bool?
是可以為空的布爾值,它實際上是一個三態布爾值 ( true
, false
和null
) - 當你需要實現一些三態行為時想一想。 換句話說, object
類型不支持可空定義作為object?
因為它是引用類型,並且可以具有null
值。
Nullable類型最常用於數據庫,因為它們可以很容易地轉換為nullable int / bit / datetime / etc. 列到CLR類型。 就像在這個例子中:
create table Test
(
Id int identity not null primary key,
Days int null,
ExactDate datetime null,
Selected bit null
)
這很容易轉換為POCO:
public class Test
{
public int Id { get; set; }
public int? Days { get; set; }
public DateTime? ExactDate { get; set; }
public bool? Selected { get; set; }
}
1 no-nonsense是指除
Nullable<T>
之外的所有值類型,它本身就是一個值類型,但是再次使它可以為空可能沒有任何意義...避免這樣的愚蠢......它不會編譯無論如何因為Nullable<Nullable<int>> i = null;
可以用兩種方式解釋:•
i.HasValue == false
•i.HasValue == true && i.Value.HasValue == false
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.