显示该方法修改 c# 中的参数的最佳方法是什么?

本文关键字:方法 参数 最佳 是什么 修改 显示 | 更新日期: 2023-09-27 17:59:09

我有一个方法,除了一些其他操作外,它还修改了其中一个参数。例如:

public void DoSomeStuffAndModifyList(List<int> list)
{
   ...
   list.Add(newElement);
}

在我看来,该方法的名称不足以指向此。可能是整个方法都是错误的,或者可能有引用使用?

显示该方法修改 c# 中的参数的最佳方法是什么?

使用方法/参数的描述性名称

public void FillItems(string foo,IList<Item> itemsToFeed)

除非实际需要,否则不要使用ref

如果您的方法

void DoSomething(List<int> list)
{
    list.Add(whatever);
}

添加ref没有用。您没有做任何需要它的事情,只会增加额外的复杂性而没有任何好处,并且可能使维护程序员更难推理该方法。

当您的方法实际上可以通过将其指向原始列表以外的内容来更改list时,请使用ref。这可以是全新的列表、另一个现有列表或 null。并且仅当您希望此更改在调用方可见时才使用 ref

对于您的方法,请探索重构它,以便可能不需要在列表中添加或删除项。完成此操作后,请绝对适当地命名该方法。完成此操作后,利用方法和参数摘要注释来传达您认为有用的信息。

/// <summary>
/// Describe the method andhere
/// </summary>
/// <param name="list">Describe what's relevant about the parameter here.</param>

不要滥用ref关键字,进行适当的重构,使用文档。

使用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;
}

如何返回一个新列表:

public List<int> DoSomeStuff(List<int> list)
{
    ...
    return list.Concat(new[] { newElement });
}

我对你的问题有点困惑。 您是在问如何命名您的方法吗?

你应该把你的行动分解成不同的方法。 我不会太担心调用这些操作的方法。 只要它有足够的描述性,那应该没问题。

正如约翰·桑德斯(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);

创建一个扩展方法。

public static class ListExtensions
{
    public static void DoSomeStuffAndModifyList(this List<int> list)
    {
       ...
       list.Add(newElement);
    }
)

并称之为:

var gradeList = new List<int>();
gradeList.DoSomeStuffAndModifyList();