我想创建一个通用约束,其中包含要作为值类型(结构)数组的类型,如:
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) {...}
}
答案 0 :(得分:12)
你不需要。
只需将其约束为: struct
,然后在使用type参数时编写T[]
而不是T
。
public class DeepCopyArrayOfValueTypes<T> : IDeepCopyable<T[]>
where T : struct
{
public T[] DeepCopy(T[] t) {...}
}