我遇到这样的情况:
public static SqlDataReader ReadFromDB(string inputSQLStatement)
{
//Does some actual work here ..
}
public static DataTable ReadFromDB(string inputSQLStatement)
{
return new DataTable().Load(ReadFromDB(inputSQLStatement));
}
基本上,第二个函数正在尝试调用另一个与调用函数同名的函数,但返回类型不同..
但是使用上面的代码,我在第二个函数的返回行上收到以下错误:
The call is ambiguous between the following methods or properties ...
我想也许编译器可以弄清楚第二个函数的返回正在执行一个采用 SqlDataReader 对象的函数,因此它知道它必须调用 ReadFromDB() 的版本,但我认为我需要显式地明确指定要调用的版本..
那么我该如何解决这个问题呢?
编辑:
没关系,我找到了答案。 C# 中不支持按返回类型重载函数: http://msdn.microsoft.com/en-us/library/aa691131(v=vs.71).aspx
最佳答案
不支持按返回类型重载,因为方法的正式签名不包括返回类型,而仅包括方法名称和参数类型(感谢 CAbbot)。请参阅here了解更多信息。
在这种情况下,您需要以不同的方式命名方法,例如:
public static SqlDataReader ReadFromDB(string inputSQLStatement)
{
//Does some actual work here ..
}
public static DataTable ReadDataTableFromDB(string inputSQLStatement)
{
return new DataTable().Load(ReadFromDB(inputSQLStatement));
}
关于c# - 当当前函数具有相同名称但不同签名时,如何在当前函数中调用另一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9890543/