C#generic constraint:Structs数组

时间:2013-12-04 15:39:17

标签: c# arrays generics value-type generic-constraints

我想创建一个通用约束,其中包含要作为值类型(结构)数组的类型,如:

public class X<T> where T : struct[]

或者

public class X<T, U>
    where U : struct
    where T : U[]

但这不起作用。似乎System.Array不能用作类型约束。

那么 - 如何将泛型参数约束为结构数组?

第一次回答后更新:

public interface IDeepCopyable<T>
{
    T DeepCopy(T t);
}


public class DeepCopyArrayOfValueTypes<T> : IDeepCopyable<T>
    where T : is an array of value types
{
    T Copy(T t) {...}
}

1 个答案:

答案 0 :(得分:12)

你不需要。

只需将其约束为: struct,然后在使用type参数时编写T[]而不是T

public class DeepCopyArrayOfValueTypes<T> : IDeepCopyable<T[]>
    where T : struct
{
    public T[] DeepCopy(T[] t) {...}
}