所以我只是在考虑函数重载......
重载的方法共享相同的名称但具有唯一的签名。参数数量、参数类型或两者必须不同。不能仅根据不同的返回类型来重载函数。
那么在下面的例子中,为什么要重载setName
而不是使用可选参数作为中间名和姓氏值呢?
class funOverload
{
public string name;
//overloaded functions
public void setName(string last)
{
name = last;
}
public void setName(string first, string last)
{
name = first + "" + last;
}
public void setName(string first, string middle, string last)
{
name = first + "" + middle + "" + last;
}
//Entry point
static void Main(string[] args)
{
funOverload obj = new funOverload();
obj.setName("barack");
obj.setName("barack "," obama ");
obj.setName("barack ","hussian","obama");
}
}
至少,使用以下代码会减少需要编写的代码量:
public void setName(string first, string middle = "", string last = "")
{
name = first + "" + middle + "" + last;
// name = "barack" + "" + "";
}
//Entry point
static void Main(string[] args)
{
funOverload obj = new funOverload();
// could optionally set middle and last name values here as well
obj.setName("barack");
}
我理解重载的概念,但我不明白为什么它比使用可选参数更理想(反之亦然)。
谁能解释一下?
仅供参考,这是我重载的第一个函数:http: //pastebin.com/ynCuaay1
此函数允许您在MySqlContext.GetReader()
有或没有参数列表的情况下调用...我认为它使代码比必须调用更简洁GetReader(sql, args.ToArray())
每时每刻