1

假设我有一个返回字符串名称列表的方法。

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

现在,如果我有一个需要该 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

您不需要将其初始化两次,只需执行以下操作:

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

尽管如果您是 FxCop 爱好者,严格来说,让方法返回具体类型(List在本例中)并不是一个好习惯,但您应该返回接口(IEnumerable

编辑:作为参考,它是 FxCop 规则CA1059 :)

于 2012-05-11T19:16:55.757 回答