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#语法。