Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9322

C#でif (Hoge()) {} がビルドエラーになる時ってどんな時?

$
0
0

問題1

最初の書き方がビルドエラーになって、2番目の書き方がビルドエラーにならない時って、どんな場合でしょうか?

if(Hoge())Console.WriteLine("Hoge() == true");
if(Hoge()==true)Console.WriteLine("Hoge() == true");


答え

それは、Hogeメソッドが、bool?を返す場合です。

staticbool?Hoge(){// false や null を返すかもしれない  returntrue;}

このような定義の場合、以下のコードはビルドエラーになってしまいます。

if(Hoge())Console.WriteLine("Hoge() == true");

問題2

それでは、以下の書き方以外でビルドエラーにならない書き方はあるでしょうか?

if(Hoge()==true)Console.WriteLine("Hoge() == true");


答え

??演算子を使って以下のように書けばビルドエラーは出なくなります。

if(Hoge()??false)Console.WriteLine("Hoge() == true");

Hige()の戻り値がnullならば ?? 演算子で falseにしています。これで、Hoge()がtrueの時だけ Hoge() ?? falseは、真になります。

問題3

それ以外の書き方はありますか?


答え

GetValueOrDefault()メソッドを使う方法もあります。

if(Hoge().GetValueOrDefault())Console.WriteLine("Hoge() == true");

bool値のdefault値はfalseなので、Hoge().GetValueOrDefault()は、Hoge()がtrueの時だけ真になります。


Viewing all articles
Browse latest Browse all 9322

Latest Images

Trending Articles