?? operator可以被用在nullable
types以及reference types
語法的意思很簡單:如果operand不是null,把它回傳給我;否則給我一個預設的值。比如說以下例子因為x是null所以y被預設成5。
int? x
= null;
int y
= x ?? 5; //
y is 5
first ?? second語法被執行的步驟如下:
檢查first
如果first不是null,回傳first
如果first是null,回傳second
?? operator可以用來串接多個nullable
variable以及reference variable。會回傳第一個不是null的變數。以下範例會印出1,因為a是null。
int? a
= null, b = 1, c
= 2;
Console.WriteLine (a ?? b ?? c); //
1
善用?? operator可以讓程式碼變得更簡潔,以下範例程式用來計算使用者的年紀,這個例子沒有使用?? operator。
DateTime
birth;
DateTime? death;
public TimeSpan
Age
{
get
{
if (death
== null)
{
return DateTime.Now - birth;
}
else
{
return death.Value - birth;
}
}
}
使用?? operator可以把上面的範例改寫成好懂又精簡。
DateTime
birth;
DateTime? death;
public TimeSpan
Age
{
get
{
DateTime
lastAlive = death ?? DateTime.Now;
return lastAlive
– birth;
}
}
-雲遊山水為知已逍遙一生而忘齡- 電腦神手
沒有留言:
張貼留言