【发布时间】:2011-06-24 19:50:06
【问题描述】:
这是一个简单的代码,我尝试在其中实现某种多态性。
您可以看到重载的Invoker 函数,接受Func<T,R> 和Action<T> 作为参数。
如果 Invoker 方法存在歧义,编译器表示无法编译:
class Program
{
static void Invoker(Action<XDocument> parser)
{
}
static void Invoker(Func<XDocument,string> parser)
{
}
static void Main(string[] args)
{
Invoker(Action);
Invoker(Function);
}
static void Action(XDocument x)
{
}
static string Function(XDocument x)
{
return "";
}
}
我得到 3(!) 个错误,我无法解释。他们在这里:
错误 1 以下方法或属性之间的调用不明确:'ConsoleApplication3.Program.Invoker(System.Action)' 和 'ConsoleApplication3.Program.Invoker(System.Func)' c: \users\i.smagin\documents\visual studio 2010\Projects\ConsoleApplication3\ConsoleApplication3\Program.cs 21 4 ConsoleApplication3
错误 2 以下方法或属性之间的调用不明确:'ConsoleApplication3.Program.Invoker(System.Action)' 和 'ConsoleApplication3.Program.Invoker(System.Func)' c: \users\i.smagin\documents\visual studio 2010\Projects\ConsoleApplication3\ConsoleApplication3\Program.cs 22 4 ConsoleApplication3
错误 3 'string ConsoleApplication3.Program.Function(System.Xml.Linq.XDocument)' 返回类型错误 c:\users\i.smagin\documents\visual studio 2010\Projects \ConsoleApplication3\ConsoleApplication3\Program.cs 22 12 ConsoleApplication3
有什么想法吗?
【问题讨论】:
-
我将您的答案合并为您问题的补充。如果你想问一个全新的问题,只需回滚我的编辑并这样做。请仅将答案作为答案发布。
标签: c# oop c#-4.0 polymorphism