2017-01-19 4 views
0

"??"という意味は何ですか?戻り値dbContextの代わりに "(dbContext = new TeduShopDbContext())"を返すのはなぜですか? (dbContext =新しいTeduShopDbContext())私はこのInit関数で返された結果を理解できません、助けてくれてありがとう:

public TeduShopDbContext Init() 
{ 
    return dbContext ?? (dbContext = new TeduShopDbContext()); 
} 

感謝

+0

'' ??それは次の値を返した場合には、ヌルでない限り手段が第1の値を返します。この場合、dbContextはこのメソッドの範囲外ではっきりと定義されており、すでに初期化されているため、新しいインスタンスを返す前に返すようにしています。[ドキュメントを参照](https://msdn.microsoft.com/en- us/library/ms173224.aspx); – Equalsk

答えて

0

これは、私が頻繁に使用する滑らかな小さなトリックです。これはNull Coalescing Operatorと呼ばれています。

dbContextがnullでない限り、dbContextは返されます。この場合、dbContextはTeduShopDbContextの新しいインスタンスに初期化され、そのインスタンスが返されます。

この小さなトリックでは、最初のGet操作でプロパティを初期化できます。この場合、Init関数は複数回呼び出された場合に新しいインスタンスを作成しません。

編集:ここでは、同じことを行い、より詳細なアプローチです:

public TeduShopDbContext Init() 
{ 
    if(dbContext == null) 
     dbContext = new TeduShopDbContext(); 

    return dbContext; 
} 
+0

ありがとう、私の友人 – user6772116

+0

よろしくお願いします。 –

1

助けるため?演算子はヌル合体演算子と呼ばれます。オペランドがヌルでない場合は、左側のオペランドを返します。それ以外の場合は、右側のオペランドを返します。

See here more examples!

+0

ありがとう、私の友人 – user6772116

関連する問題