我有一些领域的结构。字段之一是通用类型。泛型类型可以是,既可以是引用类型,也可以是值类型

我想强制将其存储为内部引用,以免结构变得太大。

struct Foo<T>
{
  T field; // should be a reference
}

我知道我可以使用objectT[],但是两者都很尴尬。是否没有通用的引用类型之类的东西?
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/

10-11 02:14
查看更多