如何在C#中绕过函数参数?
我正在寻找绕过函数参数的方法。假设我有一个函数:如何在C#中绕过函数参数?,c#,.net,function,C#,.net,Function,我正在寻找绕过函数参数的方法。假设我有一个函数: void getDataFromDB(int? ID, string name) {....} 我想知道绕过ID或名称的方法,smt如下: entity.getDataFromDB(42); void getDataFromDB(int id) { … } void getDataFromDB(string name) { … } 或 我不会这样调用函数: entity.getDataFromDB(null,"Customer"); 我
void getDataFromDB(int? ID, string name) {....}
我想知道绕过ID或名称的方法,smt如下:
entity.getDataFromDB(42);
void getDataFromDB(int id) { … }
void getDataFromDB(string name) { … }
或
我不会这样调用函数:
entity.getDataFromDB(null,"Customer");
我知道我可以使用默认值,也可以对最后一个参数使用params。
有什么好主意吗?C#有两种减少功能参数的方法:
默认值(仅当没有“标准”参数时有效):
方法重载:
void getDataFromDB(int? ID, string name) {....}
void getDataFromDB(string name) => getDataFromDB(null, name); // overload using lambda
合并命名和可选可能会有所帮助
void getDataFromDB(int? ID = null, string name = null) {....}
允许
getDataFromDB(ID:42);
getDataFromDB(name:"eric");
从外观上看,您可以通过
name
或id
(而不是两者)获取数据。如果是这样的话,那么在我看来,这是两个截然不同的操作,可以通过如下方法重载来解决:
entity.getDataFromDB(42);
void getDataFromDB(int id) { … }
void getDataFromDB(string name) { … }
如果上述两个方法之间有公共代码,那么可以将公共代码分开,并从每个方法调用
就个人而言,我会避免使用
null
参数,因为我们需要在方法中添加额外的null
检查。它为潜在的bug打开了大门。您可以控制这些方法吗?您可以将参数设置为可选参数,但如果您无法修改源代码,则必须传递一些信息为什么我不会这样调用函数:?听起来这个功能不仅仅是一个职责。。如果您可以更改该方法,那么共享该方法的代码将非常有用。您可以将命名参数与选项一起使用,听起来该方法的简单重载应该正是您想要的。假设您可以控制方法源。