私はこのコードを持っています:
MyClass _localMyClass = MyClassDAO.GetMyClassByID(123) ?? new MyClass();
これは方法です:
public static MyClass GetMyClassByID(int id)
{
var query = from m in ctx.MyClass
where m.MyClassID == id
select m;
return query.FirstOrDefault<MyClass>();
}
そのためFirstOrDefault()、「ctx」オブジェクトであるエンティティ フレームワーク コンテキストでヒットが見つかりません。したがって、返される「デフォルト」値は ですnull。これは、クエリのターゲットがクラスであるためです。
を使用したコードの最初のビットの結果は、次の??ように_localMyClassなります。私はそれがnew MyClass(). 代わりに、_localMyClassnull になります。さまざまな括弧のセットでロジックをグループ化しようとしましたが、それでもうまくいきません。
さらに奇妙です。MyClassDAO.GetMyClassByID(123) ?? new MyClass()デバッグ ブレーク ポイントを設定し、Visual Studio のウォッチ画面に をコピー アンド ペーストすると、結果はnew MyClass()ではなく になりnullます。
なぜこのように機能するのか、誰か説明できますか? メソッドの戻り値を認識せずnull、代わりにそのnew部分を使用するのはなぜですか?