語法的意思很簡單:如果operand不是null,把他回傳給我;否則給我一個預設的值。比如說以下例子因為x是null所以y被預設成5。
int? x = null; int y = x ?? 5; // y is 5first ?? 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; } }
沒有留言:
張貼留言