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

时间:2011-05-28 18:10:57

标签: c# generics

我想这样做:

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

然后我想像这样给它分配一个值:

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

我确定我已经在某个地方看到了这个但却无法弄明白该怎么做。

TIA

2 个答案:

答案 0 :(得分:3)

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

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

虽然这是C#的一个很好的语言功能,但它不符合CLS,并且不会受到其他.NET语言(如VB.NET)的支持,因此如果您要设计要与其他语言一起使用的类型,那么它值得关注记住了。

答案 1 :(得分:0)

创建自己的implicit运算符将解决此问题。

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 };
    }
}