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例外をスローしますか?
Offtopic:なぜあなたは.NETの下位バージョンに行くの? (興味があります) – RvdK
ドキュメントを参照して回答できました:https://msdn.microsoft.com/en-us/library/6373h346.aspx –
答えは**はい**です。 bar == null これは '|'と '||'の違いですが、 '|'は条件の最初のセクションがtrueを返してもコンパイルを続けます。 詳細については、[this](https://msdn.microsoft.com/en-us/library/6373h346.aspx)を参照してください。 – Null