导致重新解决C#"Espression表示'类型参数',其中'变量','值'或'类型'是预期的"

And*_*mig 3 c# generics

我有以下代码在我的C#泛型函数中产生编译问题:

static void solve () {
    int[] vals = RA<int>();
}
Run Code Online (Sandbox Code Playgroud)

和我的RA功能:

static T[] RA<T> () {
    return Console.ReadLine ().Split ().Select (v => T.Parse (v)).ToArray ();
}
Run Code Online (Sandbox Code Playgroud)

给我以下错误:

Espression denotes a 'type parameter', 
where a 'variable', 'value' or 'type' was expected
Run Code Online (Sandbox Code Playgroud)

社区可以协助我调试或理解这个问题并解决它吗?

Jon*_*eet 5

你必须重新考虑这个 - 你不能在类型参数上调用静态方法.首先,编译器无法在编译时解析它们.有关详细信息,请参阅Eric Lippert的博客文章.

您可能希望将其更改为:

static T[] RA<T>(Func<string, T> projection)
{
    return RL().Split().Select(projection).ToArray();
}
Run Code Online (Sandbox Code Playgroud)