2017-01-10 3 views
2

場合、オブジェクトは同じでヌルとアクセスのメンバーであれば、実際のコードは私は.NET 4.0から3.5へのコードの行をrefractoringい

if(bar?.foo == "outdated") 
    bar = new Bar(); 

でチェック私は、このようにこれらの行を屈折して保持することができます同じ論理?

if(bar == null || bar.foo == "outdated") 
    bar = new Bar(); 

は後if評価停止をいbar == null(式はtrueになりますから、他の部分は、trueまたはfalseを返すかどうかに関係なく)、または、それは最初の部分が既にtrueを返した場合でもbar.fooをチェックし続けるんしたがって、null例外をスローしますか?

+0

Offtopic:なぜあなたは.NETの下位バージョンに行くの? (興味があります) – RvdK

+2

ドキュメントを参照して回答できました:https://msdn.microsoft.com/en-us/library/6373h346.aspx –

+0

答えは**はい**です。 bar == null これは '|'と '||'の違いですが、 '|'は条件の最初のセクションがtrueを返してもコンパイルを続けます。 詳細については、[this](https://msdn.microsoft.com/en-us/library/6373h346.aspx)を参照してください。 – Null

答えて

関連する問題