Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中的函数数组中使用T#_C# - Fatal编程技术网

C# 在C中的函数数组中使用T#

C# 在C中的函数数组中使用T#,c#,C#,有没有办法做到这一点: static Func<T>[] x = new Func<T>[4]; static Func[]x=new Func[4]; 在C#中成功 这段代码给了我一个“找不到T型”错误 我想做的是调用一系列方法中的一个,这些方法将在本文中使用: y = SerializationHelper<T>.Serialize(x[i]()); y=SerializationHelper.Serialize(x[i]());

有没有办法做到这一点:

    static Func<T>[] x = new Func<T>[4];
static Func[]x=new Func[4];
在C#中成功

这段代码给了我一个“找不到T型”错误

我想做的是调用一系列方法中的一个,这些方法将在本文中使用:

    y = SerializationHelper<T>.Serialize(x[i]());
y=SerializationHelper.Serialize(x[i]());
我的选择是使用开关/案例,但我更喜欢表格。

您可能还没有声明通用参数
t

您的代码必须位于泛型类中…

class Class<T> // <-- Generic parameter declared at class level
{
    static Func<T>[] x = new Func<T>[4];
}
static void Method<T>() // <-- Generic parameter declared at method level
{
    Func<T>[] x = new Func<T>[4];
}

class/您可以尝试以下方法:

class SerializationHelper
{
   public void Serialize<W,T>(W data,Func<int,T> x) where W : IEnumerable
   {
        //do something with data using Func
        foreach(int i in data)
        {
            Console.WriteLine(x(i));
        }
   }
}

Func<int,int> x = (i) => {return i*i; };  // Takes one integer as input and returns square of it

new SerializationHelper().Serialize<int[],int>(new int[] { 1, 2, 3 }, x);
class SerializationHelper
{
public void序列化(W data,Func x),其中W:IEnumerable
{
//使用Func处理数据
foreach(数据中的int i)
{
控制台写入线(x(i));
}
}
}
Func x=(i)=>{return i*i;};//将一个整数作为输入并返回其平方
new SerializationHelper().Serialize(新的int[]{1,2,3},x);

方法Serialize有两个开放类型W(用于数据)和T(用于委托),W上有IEnumerable约束。您可以在Serialize方法中引入一个额外的开放类型Z,而不用Func。之后,您可以通过指定封闭类型并传递这些类型的适当参数来调用serialize方法,如示例所示。该示例使用作为Serialize方法的第二个参数传递的委托计算所有数字的平方。

它必须在泛型类中。您正在使用泛型类吗?否则,
T
将是未定义的。请提供更多上下文。类型变量
T
应该在某处声明;也许您将实现移动到了错误的范围?泛型类型参数是在类或函数级别声明的。我想您应该定义一个委托数组,其中每个委托可能都有自己的参数类型。问题是,所有这些代理都代表完全不同的类型。
Func
Func
之间没有共同之处,这就是为什么不能(有效地)将它们放入一个集合中(除非完全忽略约束并使用非泛型的
委托