C# 一个或多个参数
我有两种方法:C# 一个或多个参数,c#,methods,parameters,refactoring,C#,Methods,Parameters,Refactoring,我有两种方法: BuildThing(Thing a); BuildThings(IEnumerable<Thing> things); BuildThing(东西a); 建筑物(IEnumerable things); 从干净的代码角度来看,这是否好? 或者仅仅使用BuildThings并只使用一个东西传递IEnumerable会更好?还是使用参数 谢谢。我个人的喜好如下 接口: void Build(Thing thing); void Build(IEnumerable&l
BuildThing(Thing a);
BuildThings(IEnumerable<Thing> things);
BuildThing(东西a);
建筑物(IEnumerable things);
从干净的代码角度来看,这是否好?
或者仅仅使用BuildThings并只使用一个东西传递IEnumerable会更好?还是使用参数
谢谢。我个人的喜好如下 接口:
void Build(Thing thing);
void Build(IEnumerable<Thing> things);
void Build(东西);
虚空构建(i无数事物);
实施:
void Build(Thing thing)
{
Build(new [] { thing });
}
void Build(IEnumerable<Thing> things)
{
//do stuff
}
void Build(东西)
{
构建(新[]{thing});
}
无效构建(IEnumerable things)
{
//做事
}
我更喜欢使用此模式的原因是,它可以确保您在保留多个重载的同时提供灵活性,而不像
params
那样,您必须将任何不可枚举的数组转换为数组。纯粹从“干净的代码”的角度来看,这是完全可以的。尽管从功能上来说,这些替代方案可能更适合您,也可能不适合您。例如,使用params
强制在调用之前枚举集合,而不是在调用内部延迟枚举。您可以做一件事:
BuildThings(params Thing[] things);
这使您能够使用:
BuildThings(thing1, thing2, thing3, ...);
params对于您的方法不是一个好的解决方案 我认为只要有一个实现,就可以有两个或更多的方法
public void BuildThing(Thing a)
{
this.BuildThings(new List<Thing>(){a});
}
public void BuildThing(Thing a)
{
this.BuildThings(newlist(){a});
}
您提供的方法似乎是一个很好的实践。当您只构建一个实例而不是多个实例时,可能需要执行不同的操作
我不会使用<代码> PARAMS < /Cord>,因为这迫使您创建一个数组,如果您有一个列表,例如,
,我会考虑两种情况:
BuildThing(thinga)
中,我将使用BuildThings(IEnumerable things)
并仅使用一种方法传递IEnumerableparams
仅创建一个方法此选项有一个缺点-如果要传递多个参数,必须将每个IEnumerable
转换为Array
(当然数组除外)params
解决方案