C# C中的泛型方法(“变量”,其中应为“方法组”)

C# C中的泛型方法(“变量”,其中应为“方法组”),c#,generics,C#,Generics,我想写一个函数,从用户那里获取输入并根据指定的函数进行处理。为此,我编写了一个泛型方法,并向其传递了一个泛型委托函数,但得到的表达式表示一个“变量”,其中一个“方法组”是预期的错误 特别是,我有一类整系数多项式,叫做多项式Z。我希望用户从命令行指定系数: 委托T输入函数; 公共静态树类型GetInputFuncType inputFunc, 字符串问候msg, 字符串errMsg=输入错误。 { Console.WritegreetingMsg; 试一试{ 返回inputFunc; }抓住{ C

我想写一个函数,从用户那里获取输入并根据指定的函数进行处理。为此,我编写了一个泛型方法,并向其传递了一个泛型委托函数,但得到的表达式表示一个“变量”,其中一个“方法组”是预期的错误

特别是,我有一类整系数多项式,叫做多项式Z。我希望用户从命令行指定系数:

委托T输入函数; 公共静态树类型GetInputFuncType inputFunc, 字符串问候msg, 字符串errMsg=输入错误。 { Console.WritegreetingMsg; 试一试{ 返回inputFunc; }抓住{ Console.writelineermsg; 返回getInputPutFunc、greetingMsg、errMsg; } } 公共静态多项式 { var greetingMsg=请输入多项式的系数:; InputFunction inputFunc=委托{ 字符串inputStr=Console.ReadLine.Trim; 返回inputStr==?null:新的多项式zinputstr 分裂 .Selectc=>Int32.Parsec .托雷; }; 返回getInputPutFunc,greetingMsg; } 根据monodevelop,错误是由返回inputFunc引起的;线如果我去掉括号,只留下返回的inputFunc;语句,我得到的,可能并不奇怪,无法隐式地将类型“TFuncType”转换为“TRetType”错误

更新:

这是由于@JonSkeet的工作版本:

公共静态树类型GetInputFunc inputFunc, 字符串问候msg, 字符串errMsg=输入错误。 { Console.WritegreetingMsg; 试一试{ 返回inputFunc; }抓住{ Console.writelineermsg; 返回getInputPutFunc、greetingMsg、errMsg; } } 公共静态多项式 { var greetingMsg=请输入多项式的系数:; InputFunction inputFunc=委托{ 字符串inputStr=Console.ReadLine.Trim; 返回inputStr==?null:新的多项式zinputstr 分裂 .Selectc=>Int32.Parsec .托雷; }; 返回getInputPutFunc,greetingMsg; }
如果我打电话给GetInputhello,打招呼,出错,你希望它做什么?为什么您的方法在一个类型参数中不只是泛型的,而第一个参数是Func?你为什么要声明你自己的委托,而不是使用System.Func?@JonSkeet,啊,所以我必须找到一个方法来告诉编译器可以执行inputFunc?但我只知道三个新的约束,类和接口,如果是这样的话,它们并不适合这里。@JonSkeet working!谢谢刚刚了解了系统功能。