2016-11-17 19 views
-1

私はその建設C#メソッドoutパラメータリストの初期化(クリアで動作しません)

Method(out List<T>list) 
{ 
    list.Clear();  // doesn't allowed to initialyze List<T>list 
    list = null;  // is accepted by VSTO, however, is not so good 
} 

に、任意の提案をしてください見つかりましたか?

+3

'out'パラメータは、一般的に、メソッド内で作成されたものであり、metに渡されたものを変更するものではありませんhod。おそらくあなたは 'ref'を使うべきです。このコードが使用されるコンテキストを示す必要があります。 –

+0

ありがとうMattew!実際には、クラスのリストフィールドのメソッドに処理しています。 公開リスト str = newリスト(); ... –

答えて

3

このメソッドでは、未割り当てパラメータは使用できません。単純なルールがあります:パラメータが初期化されていないかどうかはoutを使用するか、メソッドに初期化されたパラメータを渡す場合はrefを使用します。

このコードが正しく実行されます:

void Method<T>(ref List<T> list) 
{ 
    list.Clear(); 
    list = null; 
} 

は、この問題のdifferenciesについて詳しく読む:What's the difference between the 'ref' and 'out' keywords?

2

あなたがout意味論ではなく、refを使用したい場合は、あなたがあなたのリストをインスタンス化する必要があります。

Method(out List<T>list) 
{ 
    list = new List<T>(); 
} 
関連する問題