我有一个具有一些字段的结构体。其中一个字段是通用类型。通用类型可以是引用类型或值类型。
我想强制将其作为内部引用存储,以避免结构体过大。
struct Foo<T>
{
T field; // should be a reference
}
我知道我可以使用object
或T[]
,但两者都很笨重。难道没有类似于通用引用类型的东西吗?
struct Foo<T>
{
Reference<T> field;
}
是的,当然,我可以自己编写。但我试图避免那样做。
我有一个具有一些字段的结构体。其中一个字段是通用类型。通用类型可以是引用类型或值类型。
我想强制将其作为内部引用存储,以避免结构体过大。
struct Foo<T>
{
T field; // should be a reference
}
我知道我可以使用object
或T[]
,但两者都很笨重。难道没有类似于通用引用类型的东西吗?
struct Foo<T>
{
Reference<T> field;
}
是的,当然,我可以自己编写。但我试图避免那样做。
定义一个类T。
struct Foo<T> where T : class
{
T field; // Now it's a reference type.
}
field
包装成一个对象类型 [这是我想到的唯一好的解决方案]。你究竟想要做什么? - this. __curious_geekTuple<T1>
来保存您的值类型变量(Tuples
是BCL中的类)。struct Foo<T>
{
Tuple<T> field;
}
如果你想确保任何值类型都被装箱,把它存储在对象字段中,并使用属性来强制泛型约束,例如:
struct Example<T>
{
private object obj;
public T Obj
{
get
{
return (T)obj;
}
set
{
this.obj = value;
}
}
}
如果您希望它成为一个实例:
where T : new()