Created
March 22, 2018 23:36
-
-
Save ichiroku11/5f021ba64270a64a9a38544c3ddfaed6 to your computer and use it in GitHub Desktop.
null合体演算子のサンプル
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.Text; | |
using Xunit; | |
namespace Test { | |
// null合体演算子 | |
public class NullCoalescingOperatorTest { | |
[Fact] | |
public void null合体演算子_左辺がnullでない場合は左辺の値を返す() { | |
var x = (int?)1; | |
var y = -1; | |
var result = x ?? y; | |
// 以下と同じ | |
//var result = x != null ? x : y; | |
Assert.Equal(1, result); | |
} | |
[Fact] | |
public void null合体演算子_左辺がnullの場合は右辺の値を返す() { | |
var x = default(int?); | |
var y = -1; | |
var result = x ?? y; | |
// 以下と同じ | |
//var result = x != null ? x : y; | |
Assert.Equal(-1, result); | |
} | |
[Fact] | |
public void null合体演算子_左辺がnullの場合は右辺の値を返すその2() { | |
var x = default(int?); | |
var y = default(int?); | |
var z = 0; | |
var result = x ?? y ?? z; | |
/* | |
// 以下と同じ | |
var result = x != null | |
? x | |
: y != null | |
? y | |
: z; | |
*/ | |
Assert.Equal(0, result); | |
} | |
[Fact] | |
public void null合体演算子_評価順を確認する() { | |
var count = 0; | |
int? getX() { | |
Assert.Equal(0, count); | |
count++; | |
return null; | |
} | |
int? getY() { | |
Assert.Equal(1, count); | |
count++; | |
return null; | |
} | |
int? getZ() { | |
Assert.Equal(2, count); | |
count++; | |
return 0; | |
} | |
// 前から順に評価される | |
var result = getX() ?? getY() ?? getZ(); | |
Assert.Equal(0, result); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment