我想这样做:
public class ValueContainer<T> {
public T Value { get; set; }
}
然后我想像这样给它分配一个值:
private ValueContainer<string> value;
value = "hello";
我确定我已经在某个地方看到了这个但却无法弄明白该怎么做。
TIA
答案 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 };
}
}