从类的泛型参数类型的实例创建类的实例

本文关键字:实例 类型 创建 泛型 参数 | 更新日期: 2023-09-27 17:57:49

我想这样做:

public class ValueContainer<T> {
  public T Value { get; set; }
}

然后我想给它分配一个值,如下所示:

private ValueContainer<string> value;
value = "hello";

我确信我在某个地方见过这个,但不知道怎么做。

TIA

从类的泛型参数类型的实例创建类的实例

您可以使用自定义隐式运算符,例如:

public static implicit operator ValueContainer<T>(T value) {
    return new ValueContainer { Value = value };
}

虽然这是C#的一个很好的语言功能,但它不符合CLS,也不受VB.NET等其他.NET语言的支持,所以如果你正在设计可与其他语言重用的类型,那么值得记住这一点。

创建自己的隐式运算符可以解决这个问题。

class Program
{
    static void Main(string[] args)
    {    
        Container<string> container;
        container = "hello";
    }
}
public class Container<T>
{
    public T Value { get; set; }
    public static implicit operator Container<T>(T val)
    {
        return new Container<T> { Value = val };
    }
}