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

显示该方法修改c#中的参数的最佳方式是什么?,c#,methods,C#,Methods,我有一个方法,除了一些其他操作之外,它还修改了一个参数。 例如: public void DoSomeStuffAndModifyList(List<int> list) { ... list.Add(newElement); } public void dosomeStuff和modifyList(列表) { ... list.Add(新元素); } 在我看来,该方法的名称不足以指向此。可能是整个方法错误,或者可能存在ref或out使用?使用可观察到的采集和火灾采集

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

public void DoSomeStuffAndModifyList(List<int> list)
{
   ...
   list.Add(newElement);
}
public void dosomeStuff和modifyList(列表)
{
...
list.Add(新元素);
}

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

使用
可观察到的采集
和火灾
采集更改
事件

或者你也可以把你的方法做成这样的注释法

public static List<int> DoSomeStuffAndModifyList(this List<int> list)
{
 ...
 list.Add(newElement);
 return list;
}
公共静态列表doSomeStuff和ModifyList(此列表)
{
...
list.Add(新元素);
退货清单;
}

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

你应该把你的行为分成不同的方法。我不太担心调用这些操作的方法。只要描述足够,就可以了

正如约翰·桑德斯所说,将你的方法分成单一责任

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 List GetList()
{
//返回列表
}
公共作废修改列表(列表)
{
//修改列表,您可以根据需要返回。
}
//调用2个方法
List=GetList();
修改列表(列表);

返回新列表如何:

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

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

如果你的方法是

void DoSomething(List<int> list)
{
    list.Add(whatever);
}
不要滥用
ref
关键字,进行适当的重构,使用文档。

创建一个

公共静态类ListExtensions
{
公共静态无效DoSomeStuff和ModifyList(此列表)
{
...
list.Add(新元素);
}
)
并称之为:

var gradeList = new List<int>();
gradeList.DoSomeStuffAndModifyList();
var gradeList=新列表();
gradeList.doSomeStuff和ModifyList();

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

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

它真的需要修改列表吗?为什么你不能返回你本来要添加的元素?那么这取决于调用方如何处理它。为什么要修改列表?返回一个经过修改的新列表。这里有什么问题?“我觉得方法的名称不足以指向此”-不清楚您是否有“和”在方法名称中,表示该方法有两个职责。将其拆分为两个方法,每个方法都有一个职责。它已经拆分。这就是调用这两个方法的方法。那么我该怎么办?它已经在两个方法中中断了,这就是调用这些方法的方法。@Hun1Ahpu为什么需要这个方法来调用这两个我方法?除了调用这些方法之外,
DoSomeStuff和ModifyList
还有一些逻辑吗?按照Micropressor的说法,如果你所有的DoSomeStuff和ModifyList都调用了两个方法,为什么不直接依次调用这两个方法呢
List.Add
?这是我最喜欢的选择,但我不确定它是否具有足够的描述性,它假装参数未在方法内部修改,但新值是returned@LukeH,您是对的。
Concat
将更适合模拟添加。@Hun1Ahpu,确切地说,这就是为什么它是描述性的。与所有LINQ扩展一样离子方法会返回新的值。在这种情况下,我非常喜欢Obj-C的方法签名基于参数。
-(void)additems for:(NSString*)user ToList:(NSMutableArray*)list)
var gradeList = new List<int>();
gradeList.DoSomeStuffAndModifyList();
public void FillItems(string foo,IList<Item> itemsToFeed)