我有一个方法除了一些其他动作外还修改其中一个参数。 例如:
public void DoSomeStuffAndModifyList(List<int> list)
{
...
list.Add(newElement);
}
我认为该方法的名称不足以指向此。可能是整个方法都错了,或者可能会使用 ref 或 out ?
答案 0 :(得分:2)
为方法/参数使用描述性名称
public void FillItems(string foo,IList<Item> itemsToFeed)
答案 1 :(得分:1)
除非确实有必要,否则请勿使用ref
。
如果你的方法是
void DoSomething(List<int> list)
{
list.Add(whatever);
}
添加ref
无效。您没有做任何需要它的事情,只是增加了额外的复杂性而没有任何好处,并且可能使维护程序员更难以推理该方法。
当您的方法实际上可以通过将其指向原始列表之外的其他内容时,ref
使用list
。这可以是一个全新的列表,另一个现有列表,或null。当您希望在调用者处看到此更改时,和仅使用ref
。
对于您的方法,请探索重构它,以便可能无需在列表中添加或删除项目。完成此操作后,请正确命名方法。完成 后,使用方法和参数摘要注释来传达您认为有用的信息。
/// <summary>
/// Describe the method andhere
/// </summary>
/// <param name="list">Describe what's relevant about the parameter here.</param>
不要滥用ref
关键字,执行适当的重构,执行使用文档。
答案 2 :(得分:0)
在更改时使用ObservableCollection<T>
并触发CollectionChanged
事件
http://msdn.microsoft.com/en-us/library/ms668604.aspx
或者您可以将您的方法设为像这样的执行方法
public static List<int> DoSomeStuffAndModifyList(this List<int> list)
{
...
list.Add(newElement);
return list;
}
答案 3 :(得分:0)
我对你的问题感到有些困惑。你在问如何命名你的方法吗?
你应该将你的行为分解为不同的方法。我不会太担心调用这些操作的方法。只要描述性足够,那应该没问题。
正如John Saunders所说,将你的方法分解为单一责任。
public List<int> GetList()
{
//return list
}
public void ModifyList(List<int> list)
{
//Modify list, you could return if you wanted to.
}
//Call 2 methods
List<int> list = GetList();
ModifyList(list);
答案 4 :(得分:0)
如何返回新列表:
public List<int> DoSomeStuff(List<int> list)
{
...
return list.Concat(new[] { newElement });
}
答案 5 :(得分:0)
public static class ListExtensions
{
public static void DoSomeStuffAndModifyList(this List<int> list)
{
...
list.Add(newElement);
}
)
并称之为:
var gradeList = new List<int>();
gradeList.DoSomeStuffAndModifyList();