我有一些领域的结构。字段之一是通用类型。泛型类型可以是,既可以是引用类型,也可以是值类型。
我想强制将其存储为内部引用,以免结构变得太大。
struct Foo<T>
{
T field; // should be a reference
}
我知道我可以使用
object
或T[]
,但是两者都很尴尬。是否没有通用的引用类型之类的东西?struct Foo<T>
{
Reference<T> field;
}
是的,可以,我可以自己写。但是我在努力避免这种情况
最佳答案
如果要绝对确定是否有任何“值类型”被装箱,请将其存储在对象字段中,并使用属性强制执行通用约束;否则,请参见图4。 IE:
struct Example<T>
{
private object obj;
public T Obj
{
get
{
return (T)obj;
}
set
{
this.obj = value;
}
}
}
关于c# - 强制(通用)值类型作为引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3607442/