我正在寻找绕过函数参数的方法。假设我有一个功能:
void getDataFromDB(int? ID, string name) {....}
我想知道绕过ID或名称的方法,像这样:
entity.getDataFromDB(42);
或
entity.getDataFromDB("Customer");
我不会这样调用函数:
entity.getDataFromDB(null,"Customer");
我知道我可以使用默认值,也可以在最后一个参数中使用参数。 有什么好主意吗?
答案 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)
从外观上看,您希望通过name
或id
(而不是两者)来获取数据。如果真是这样,那么在我看来这是两个不同的操作,可以通过如下方法重载来解决:
void getDataFromDB(int id) { … }
void getDataFromDB(string name) { … }
如果以上两种方法之间存在通用代码,则可以将通用代码分开并从每个方法中调用。
我个人会避免使用nullable
参数,因为我们随后需要在我们的方法中添加其他null
检查。它为潜在的错误打开了大门。