1

String 名のリストを返すメソッドがあるとします。

public List<String> buildNamesList(){
   List<String> namesList = new List<String>();
   //add several names to the list
   return namesList;
}

名前リストがそれを返すことを必要とするメソッドがある場合、それを返すのが最善の方法ですか?

public void someMethod(){
  List<String> namesList = new List<String>();
  namesList = buildNamesList();
  //traverse namesList
}
4

4 に答える 4

5

buildNamesListメソッドで新しいリストを作成する場合は、次のように言います。

var namesList = buildNamesList(); 
于 2012-05-11T19:17:16.310 に答える
4

リストを返す方法は、実際に何をしているかによって異なります。

単にメモリ内のリスト全体が必要な場合は、アプローチは問題ありませんが、私がそれを呼び出す方法は次のようになります。

public void someMethod(){
  List<String> namesList = buildNamesList();
}

すぐに置き換えられる空のリストに変数を初期化する必要はありません。

リストが非常に大きい場合、または単にリストをトラバースする必要がある場合は、yieldキーワードを使用して関数の戻り値のタイプをに変更できますIEnumerable<string>が、現在のデザインはこのパターンに適合しません。

于 2012-05-11T19:16:40.880 に答える
1

new List<T>()すぐに戻り値に置き換えるためだけに変数を割り当てないでください。

于 2012-05-11T19:16:41.123 に答える
1

2回初期化する必要はありません。次のようにしてください。

public void someMethod(){
    List<String> namesList = buildNamesList();
}

FxCopが好きな場合は、厳密に言えば、メソッドに具象型(Listこの場合)を返すことはお勧めできませんが、インターフェイス(IEnumerable)を返す必要があります。

編集:参考までに、FxCopルールCA1059です:)

于 2012-05-11T19:16:55.757 に答える