または、if ステートメントが null を返さない場合 - なぜこの特定のプロパティを割り当てることができないのか。
例:
String stringParam = "some string";
MyClass myclass = new MyClass();
myclass.MyProperty = MyMethod(out stringParam ) ? stringParam : String.Empty;
上記の行の直後にブレークポイントをヒット - 私は MyProperty を評価します - そしてそれは null です!?
MyMethod の戻り値をトリプル チェックしましたが、それは true です (戻り値の型はブール値です)。また、stringParam は MyMethod 内で更新されています。
上記の内容が不正確または間違っていると仮定すると、MyProperty は少なくとも String.Empty と等しくなければなりません。また、MyMethod が true であるが、文字列が更新されている場合、MyProperty は「何らかの文字列」に等しい必要があります。
なぜヌルなのですか?
MyClass 宣言では、アクセス修飾子に関する複雑さはありません。それは簡単です:
public class MyClass()
{
public String MyProperty;
}
注: 命名などの点でコードを簡略化し、わずかに変更しましたが、このコードは私が持っているコードと構文的に同一です。
私が試したこと
私はこれのために構文を変えました、そして驚くべきことに(私にとって)それはうまくいきました!?
if(MyMethod(out stringParam)) { myclass.MyProperty = stringParam; }
評価時に、myclass.MyProperty は期待される更新された stringParam と等しくなります。
理由の説明が欲しいです。out パラメーターに関して、インラインの if ステートメントの動作が異なる場合はありますか?