请让我知道如何编写接受名称或ID作为参数的C#函数
即使用此功能的用户可以将Id或名称传递给该函数。
我试过
getdetails(string name,Guid id)
但是这要求两者都是用户的必需参数
答案 0 :(得分:3)
通常,您要查找的术语是“#34;函数重载。”#34;您可以定义两者:
GetDetails(string name);
GetDetails(Guid id);
如果两个都可用,甚至可以添加另一个选项?:
GetDetails(string name, Guid id);
对象内部,这些函数可以调用公共共享代码,它们唯一的区别在于它们如何处理输入。在最新版本的.NET中,您可以将它们组合成一个带有可选参数的函数:
GetDetails(string name = "", Guid id = new Guid())
在这种情况下,您必须检查"魔术值"函数中的""
和new Guid()
。因此,虽然签名可能在某种程度上看起来更清晰,但代码在另一种方式中可能更糟。另外值得注意的是,使用此方法两个值都是可选的,因此技术上既不需要。这可能会使它变得不那么清晰,所以我选择了以前的函数重载选项。
关键是你有这方面的选择,如果你发现你写的代码不清楚或难以维护,你应该确保你运用正确的选项。
答案 1 :(得分:2)
使用重载。一个主要功能将包含将使用不同重载的所有业务逻辑和其他功能。
如果你没有一个你需要的地方,那么public void getdetails(string name, Guid? id)
就不需要了。
注意:您需要仔细执行此操作以避免进行不正常的函数调用。
public void getdetails(string name, Guid? id)
{
// logic
if(name != null){}
if(id.HasValue){}
}
public void getdetails(string name){
getdetails(name,null);
}
public void getdetails(Guid id){
getdetails(null,id);
}