3

プロジェクトでこの新しい興味深いコードを見つけました。それは何をし、どのように機能しますか?

MemoryStream stream = null;
MemoryStream st = stream ?? new MemoryStream();
4

3 に答える 3

8
A ?? B

の省略形です

if (A == null) 
    B
else 
    A

より正確には

A == null ? B : A

したがって、最も冗長な展開では、コードは次のようになります。

MemoryStream st;
if(stream == null)
    st = new MemoryStream();
else
    st = stream;
于 2013-07-31T05:28:09.750 に答える
1

基本的には、MemoryStream stream等しい場合null、作成することを意味しますMemoryStream st = new MemoryStream();

したがって、この場合は次のようになります。

MemoryStream st = stream ?? new MemoryStream();

意味

MemoryStream st;

if (stream == null)
   st = new MemoryStream();
else 
   st = stream;

これはnull coelesce operatorと呼ばれます。詳細はこちら: http://msdn.microsoft.com/en-us/library/ms173224.aspx

于 2013-07-31T05:27:31.867 に答える
0

これは null 合体演算子と呼ばれます。ここを参照してください。

streamnull の場合、新しいMemoryStreamオブジェクトを作成することを意味します。

于 2013-07-31T05:28:21.180 に答える