接受名称或ID作为参数的C#函数

时间:2014-07-17 18:47:29

标签: c#

请让我知道如何编写接受名称或ID作为参数的C#函数

即使用此功能的用户可以将Id或名称传递给该函数。

我试过

getdetails(string name,Guid id)

但是这要求两者都是用户的必需参数

2 个答案:

答案 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);
}