2

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

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) {...}
}
4

1 回答 1

13

你不需要。

只需将其限制为 : struct,然后在使用类型参数时写入T[]而不是写入。T

public class DeepCopyArrayOfValueTypes<T> : IDeepCopyable<T[]>
    where T : struct
{
    public T[] DeepCopy(T[] t) {...}
}
于 2013-12-04T15:40:45.267 回答