私はこのコードを持っています:
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()
. 代わりに、_localMyClass
null になります。さまざまな括弧のセットでロジックをグループ化しようとしましたが、それでもうまくいきません。
さらに奇妙です。MyClassDAO.GetMyClassByID(123) ?? new MyClass()
デバッグ ブレーク ポイントを設定し、Visual Studio のウォッチ画面に をコピー アンド ペーストすると、結果はnew MyClass()
ではなく になりnull
ます。
なぜこのように機能するのか、誰か説明できますか? メソッドの戻り値を認識せずnull
、代わりにそのnew
部分を使用するのはなぜですか?