[C#] ?? 演算子と GetValueOrDefault() メソッド
どっちも同じようなコトに使います。 つまり、 変数が null だったときの値を指定してやる、 という…
[TestMethod]
public void GetValueOrDefaultTest()
{
int? x = 3;
Assert.AreEqual<int>(3, x.GetValueOrDefault(-1));
Assert.AreEqual<int>(3, x ?? -1);
int? y = null;
Assert.AreEqual<int>(-1, y.GetValueOrDefault(-1));
Assert.AreEqual<int>(-1, y ?? -1);
}
おんなじようなもんだから、 どっちを使うか好みで決めちゃえばいいか~、 …と軽く考えていたんですが。 なんたるおバカ。 演算子はオブジェクトに使えるのに対して、 GetValueOrDefault() メソッドは Nullable<T> 型だけが持っているメソッドなんですね。
つまり…
string s = null;
//Assert.AreEqual<string>("(null)", s.GetValueOrDefault("(null)")); ← コンパイルエラー
Assert.AreEqual<string>("(null)", s ?? "(null)");
…ということ。 f(^^;
| 固定リンク
「プログラミング」カテゴリの記事
- 【.NET / Win8.1 ストアアプリ】 HttpClient で TLS 1.1 / 1.2 に対応するには(2018.06.17)
- 【VS2017 15.7pv2】 XAML のランタイム ツールに 「ヒートマップ」 が増えた(2018.03.28)
- 【.NET Core】 プロジェクトを作ると 「project.assets.json が見つかりません」 エラー(2018.02.10)
- 【#UWP】 ビットマップの表示色を変える (Win2D.uwp 経由で Direct2D を使う)(2017.08.23)
- 【#UWP】 CompactOverlay モード: Picture in Picture というか、「最前面に表示」するウィンドウを作る(2017.08.16)
この記事へのコメントは終了しました。
コメント