假设我有一个返回String名称列表的方法。
public List<String> buildNamesList(){
List<String> namesList = new List<String>();
//add several names to the list
return namesList;
}
现在,如果我有一个方法需要,nameList会以最好的方式返回它吗?
public void someMethod(){
List<String> namesList = new List<String>();
namesList = buildNamesList();
//traverse namesList
}
答案 0 :(得分:4)
如何返回列表实际上取决于你正在做什么。
如果您只需要内存中的整个列表,那么您的方法很好,不过我称之为:
public void someMethod(){
List<String> namesList = buildNamesList();
}
无需将变量初始化为可立即替换的空列表。
如果列表非常大或您只需要遍历它,您可以使用yield
关键字并将函数的返回类型更改为IEnumerable<string>
,但您当前的设计不适合这种模式。
答案 1 :(得分:4)
如果要在buildNamesList方法中创建新列表,我只想说:
var namesList = buildNamesList();
答案 2 :(得分:1)
请勿将变量分配给new List<T>()
,只是立即将其替换为返回值。
答案 3 :(得分:1)
您不需要对其进行两次初始化,只需执行以下操作:
public void someMethod(){
List<String> namesList = buildNamesList();
}
虽然如果您是FxCop爱好者,严格来说,让方法返回具体类型(在此实例中为List
)并不是一个好习惯,您应该返回接口({{1 }})
编辑:供参考,它的FxCop规则CA1059:)