メインメニューを開く

差分

C Sharp/null合体演算子

91 バイト追加, 2014年3月6日 (木) 06:38
編集の要約なし
[[C Sharp|C#]]における'''null合体演算子'''(ぬるがったいえんざんし、null (読み:ぬるがったいえんざんし、[[英語]]:null coalescing operator)とは、[[C Sharp/null許容値型null許容型|null許容値型null許容型]]や[[C Sharp/参照型|参照型]]などにおいて、その[[値]]が[[C Sharp/null|null]]の場合に指定した値を返す[[演算子]]である。null合体演算子は「である。なお、null合体演算子は「'''??'''」という記号をもちいるため「'''??演算子'''」と記述されることもあるが、ハテナ2個とか[[ググれ]]ないわ、読み方に困るわで「null合体演算子」で統一することが望ましい。ないわ、読み方に困るわで「null合体演算子」で統一することが望ましいとされている。
null合体演算子はC# 2.0で追加された機能(演算子)で、同じくC0で追加された機能(演算子)であり、同じくC# 2.0で追加された[[C Sharp/null許容値型|null許容値型]]に付随して追加されたものだと思われるが、従来からの[[C Sharp/参照型|参照型]]でも使える。
== 記述方法 ==
null合体演算子は以下のように記述する。
この例では、xがnull以外の場合にはxを返し、xがnullの場合にはyを返す。この例では、xが[[null]]以外の場合にはxを返し、xが[[null]]の場合にはyを返す。
<source lang="csharp">
int z = x ?? y;
これを[[三項演算子]]で書くと以下のようになる。
非常にわかりにくく、とくに初心者に見せるための[[ソースコード]]としては最悪である。
[[三項演算子]]は[[N88-BASIC]]などの時代においては[[if文]]よりも高速に[[条件分岐]]できるという理由で乱用され、また「俺かっこいい」と勘違いしたバカが意味もなく乱用するケースも多々見受けられたが、現代においては乱用は避けるべきである。できるという理由で乱用され、また「俺かっこいい」と勘違いしたバカが意味もなく乱用するケース([[中級者病]])も多々見受けられたが、現代においては乱用は避けるべきである。
<source lang="csharp">
int z = x != null ? x : y;
}
// C#で定番のエントリーポイントで定番のエントリポイント
static void Main()
{
int? x = null;
// null合体演算子の例1
// y = xがnullでなければx, xがnullなら-1
int y = x ?? -1;
int i = GetNullableInt() ?? default(int);
// null合体演算子の例3 // 参照型の場合もnull許容値型の場合と同じ
string s = GetStringValue();
Console.WriteLine(s ?? "Unspecified");
* [[C Sharp|C#]]
* [[C Sharp/参照型|C#/参照型]]
* [[C Sharp/null許容値型null許容型|C#/null許容値型null許容型]]
* [[C Sharp/null|C#/null]]
 
== 参考文献 ==
<references/>
== 外部リンク ==
* [http://msdn.microsoft.com/ja-jp/library/ms173224.aspx ?? 演算子 (C# リファレンス) - MSDN]
 
== 参考文献 ==
{{reflist}}
{{stub}}