Ste*_*ger 8 c# reference value-type
我有一些带有一些字段的结构.其中一个字段是泛型类型.泛型类型可以是引用类型或值类型.
我想强制它在内部存储为引用,以避免结构变得太大.
struct Foo<T>
{
T field; // should be a reference
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用object或者T[],但两者都很尴尬.是不是像通用的参考类型?
struct Foo<T>
{
Reference<T> field;
}
Run Code Online (Sandbox Code Playgroud)
是的,当然,我可以写自己的.但我试图避免这种情况
thi*_*eek 10
将T定义为一个类.
struct Foo<T> where T : class
{
T field; // Now it's a reference type.
}
Run Code Online (Sandbox Code Playgroud)
如果您试图绝对确定任何值类型都已装箱,请将其存储在对象字段中并使用属性来强制通用约束;IE:
struct Example<T>
{
private object obj;
public T Obj
{
get
{
return (T)obj;
}
set
{
this.obj = value;
}
}
}
Run Code Online (Sandbox Code Playgroud)