C# 当您创建一个参数包含2个对象但只更改1个对象的方法时,有什么好的做法

C# 当您创建一个参数包含2个对象但只更改1个对象的方法时,有什么好的做法,c#,C#,例如: void FilterA(Hashset<T> blackList, List<T> myList) { blackList.UnionWith(myList); } void FilterA(Hashset黑名单,List myList) { 黑名单.联合(myList); } 我不知道是否会有一些好的编码风格将blackList和myList分开。还是有必要呢?你可以像这样

例如:

          void FilterA(Hashset<T> blackList, List<T> myList)
          {
            blackList.UnionWith(myList);
          }
void FilterA(Hashset黑名单,List myList)
{
黑名单.联合(myList);
}

我不知道是否会有一些好的编码风格将
blackList
myList
分开。还是有必要呢?

你可以像这样做:
void FilterA(hashset黑名单,IEnumerable mylist>
。显然,IEnumerables是不能修改的


但我认为这里最重要的是函数和变量的名称。从它们的名称中应该可以清楚地看出函数的作用。

你可以这样做:
void FilterA(哈希集黑名单,IEnumerable mylist>
。显然,IEnumerable不能修改


但我认为这里最重要的是函数和变量的名称。从它们的名称中应该可以清楚地看出函数的作用。

如果你不列出特定的成员,你可以使用一个不可变的接口。
IEnumerable
是一个很好的候选者。

如果你不列出特定的成员s、 您可以使用不可变的接口。
IEnumerable
是一个很好的候选者。

就良好实践而言,在您的特定情况下,我将不使用此方法。实现一个只包装单个框架方法(
HashSet.UnionWith
)的方法实际上只会模糊代码

但是,一般来说,我认为文档和命名是关键。如果您的方法名称更清楚,这将是显而易见的。请考虑此方法-<代码> FieltA实际上建议您“过滤”集合,而不是基于第二集合添加项目。


另外,使用适当的接口,例如
IEnumerable
,而不是传递具体的类(
List
)可以帮助区分事物。如果您传递
IEnumerable
,这一点尤其正确,因为这是一个不公开任何编辑操作的界面。

就良好实践而言,在您的特定情况下,我将省略此方法。实现一个只包装单个框架方法的方法(
HashSet.UnionWith
)实际上只是在模糊代码

但是,一般来说,我认为文档和命名是关键。如果您的方法名称更清楚,这将是显而易见的。请考虑此方法-<代码> FieltA实际上建议您“过滤”集合,而不是基于第二集合添加项目。


另外,使用适当的接口,例如
IEnumerable
,而不是传递具体的类(
List
)可以帮助区分事物。如果传递的是
IEnumerable
,尤其如此,因为这是一个不公开任何编辑操作的界面。

可以将IEnumerable用作第二个参数

void FilterA<T>(HashSet<T> blacklist, List<T> mylist)
{
    blacklist.UnionWith(mylist);
}
void FilterA(HashSet黑名单,List mylist)
{
黑名单.联合(mylist);
}

没有直接等价于C/C++常量参数修饰符。

第二个参数可以使用IEnumerable

void FilterA<T>(HashSet<T> blacklist, List<T> mylist)
{
    blacklist.UnionWith(mylist);
}
void FilterA(HashSet黑名单,List mylist)
{
黑名单.联合(mylist);
}

没有与C/C++常量参数修饰符直接等效的选项。

您不想更改我的列表吗?我建议使用以下选项:

void FilterA<T>(HashSet<T> blacklist, IEnumerable<T> mylist)
{
    blacklist.UnionWith(mylist);
}
void过滤器(哈希集黑名单,IEnumerable mylist)
{
黑名单.联合(mylist);
}

您不想更改我的列表,对吗?我建议使用以下方法:

void FilterA<T>(HashSet<T> blacklist, IEnumerable<T> mylist)
{
    blacklist.UnionWith(mylist);
}
void过滤器(哈希集黑名单,IEnumerable mylist)
{
黑名单.联合(mylist);
}

您需要在代码示例中投入更多的精力和精力。至少要编写实际可编译的有效C#语法。您需要在代码示例中投入更多的精力和精力。至少要编写实际可编译的有效C#语法。