如何绕过C#中的函数参数?

时间:2018-10-09 18:35:31

标签: c# .net function

我正在寻找绕过函数参数的方法。假设我有一个功能:

void getDataFromDB(int? ID, string name) {....}

我想知道绕过ID或名称的方法,像这样:

entity.getDataFromDB(42);

entity.getDataFromDB("Customer");

我不会这样调用函数:

entity.getDataFromDB(null,"Customer");

我知道我可以使用默认值,也可以在最后一个参数中使用参数。 有什么好主意吗?

3 个答案:

答案 0 :(得分:2)

C#有两种减少函数参数的方法:

默认值(仅在没有“标准”参数的情况下有效):

void getDataFromDB(int? ID, string name = "Default") {....}

方法重载:

void getDataFromDB(int? ID, string name) {....} 
void getDataFromDB(string name) => getDataFromDB(null, name); // overload using lambda

答案 1 :(得分:0)

命名和可选的组合可能会有所帮助。

void getDataFromDB(int? ID = null, string name = null) {....}

允许

getDataFromDB(ID:42);
getDataFromDB(name:"eric");

答案 2 :(得分:0)

从外观上看,您希望通过nameid(而不是两者)来获取数据。如果真是这样,那么在我看来这是两个不同的操作,可以通过如下方法重载来解决:

void getDataFromDB(int id) { … }

void getDataFromDB(string name) { … }

如果以上两种方法之间存在通用代码,则可以将通用代码分开并从每个方法中调用。

我个人会避免使用nullable参数,因为我们随后需要在我们的方法中添加其他null检查。它为潜在的错误打开了大门。