「C Sharp/null合体演算子」を編集中
ナビゲーションに移動
検索に移動
この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
1行目: | 1行目: | ||
− | [[C Sharp|C#]]における'''null合体演算子''' | + | [[C Sharp|C#]]における'''null合体演算子'''(ぬるがったいえんざんし、null coalescing operator)とは、[[C Sharp/null許容型|null許容型]]や[[C Sharp/参照型|参照型]]などにおいて、その[[値]]が[[C Sharp/null|null]]の場合に指定した値を返す[[演算子]]である。なお、null合体演算子は「'''??'''」という記号をもちいるため「'''??演算子'''」と記述されることもあるが、ハテナ2個とか[[ググれ]]ないわ、読み方に困るわで「null合体演算子」で統一することが望ましいとされている。 |
− | null合体演算子はC# 2. | + | null合体演算子はC# 2.0で追加された機能(演算子)で、同じくC# 2.0で追加された[[C Sharp/null許容値型|null許容値型]]に付随して追加されたものだと思われるが、従来からの[[C Sharp/参照型|参照型]]でも使える。 |
== 記述方法 == | == 記述方法 == | ||
12行目: | 12行目: | ||
これを[[三項演算子]]で書くと以下のようになる。 | これを[[三項演算子]]で書くと以下のようになる。 | ||
非常にわかりにくく、とくに初心者に見せるための[[ソースコード]]としては最悪である。 | 非常にわかりにくく、とくに初心者に見せるための[[ソースコード]]としては最悪である。 | ||
− | [[三項演算子]]は[[N88-BASIC]]などの時代においては[[if文]]よりも高速に[[条件分岐]] | + | [[三項演算子]]は[[N88-BASIC]]などの時代においては[[if文]]よりも高速に[[条件分岐]]できるという理由で乱用され、また「俺かっこいい」と勘違いしたバカが意味もなく乱用するケースも多々見受けられたが、現代においては乱用は避けるべきである。 |
<source lang="csharp"> | <source lang="csharp"> | ||
int z = x != null ? x : y; | int z = x != null ? x : y; | ||
55行目: | 55行目: | ||
int? x = null; | int? x = null; | ||
− | + | // null合体演算子の例1 | |
// y = xがnullでなければx, xがnullなら-1 | // y = xがnullでなければx, xがnullなら-1 | ||
int y = x ?? -1; | int y = x ?? -1; | ||
63行目: | 63行目: | ||
int i = GetNullableInt() ?? default(int); | int i = GetNullableInt() ?? default(int); | ||
− | + | // null合体演算子の例3 | |
− | + | // 参照型の場合もnull許容値型の場合と同じ | |
string s = GetStringValue(); | string s = GetStringValue(); | ||
Console.WriteLine(s ?? "Unspecified"); | Console.WriteLine(s ?? "Unspecified"); |