2014年1月12日 星期日

C# - ?? Operator


?? operator可以被用在nullable types以及reference types
語法的意思很簡單:如果operand不是null,把它回傳給我;否則給我一個預設的值。比如說以下例子因為xnull所以y被預設成5

int? x = null;
int y = x ?? 5;  // y is 5

first ?? second語法被執行的步驟如下:

檢查first
如果first不是null,回傳first
如果firstnull,回傳second

?? operator可以用來串接多個nullable variable以及reference variable。會回傳第一個不是null的變數。以下範例會印出1,因為anull

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;
    }
}


-雲遊山水為知已逍遙一生而忘齡- 電腦神手

沒有留言:

張貼留言