泛型类型函数(属性)



我正在尝试返回一个 T 类型值。

public T this[int index]
{
     get
     {
           if (typeof(T) == typeof(int))
              return (T) dynEx[index].Int;
           else if (typeof(T) == typeof(string))
              return (T) dynEx[index].Str;
     }
}

dynEx 是一个复杂对象,它基于某个自定义表达式返回一个对象。

上面的代码显然不起作用,因为它有一个错误:"无法将类型'int'转换为T"和"无法将类型'字符串'转换为T"。

如何在不影响性能的情况下实现此目的?

此属性每帧调用超过一千次(这是一个游戏(。

为了投射到int,你需要先投射结果给object,可能是拳击。这很烦人,但不幸的是,这是 C# 泛型的限制 - 不幸的是,出于很好的理由,我现在就逃脱了。所以你想要:

public T this[int index]
{
    get
    {
        if (typeof(T) == typeof(int))
        {
            return (T) (object) dynEx[index].Int;
        }
        else if (typeof(T) == typeof(string))
        {
            return (T) (object) dynEx[index].Str;
        }
        // TODO: Whatever you want to happen if T isn't int/string
    }
}

最新更新