抽象类中的隐式转换
c#
我有一个抽象对象 Arg 是否有机会像这样使用它:
Arg<string> Title = "Big Title";
Console.WriteLine(Title);
输出应该是:“大标题”
我可以使用隐式运算符吗?
基类是:
public abstract class Arg<T>
where T: class,new()
{
public object Value { get; set; }
public Arg()
{
Value = new T();
}
public static implicit operator T(T t)
{
return t or Value ;
}
public override string ToString()
{
return Value.ToString();
}
}
欢迎任何想法。提前致谢
回答
您将无法构建abstract类。但是,您可以将其设置为非抽象的并为其创建隐式转换。例如:
public class Arg<T>
{
public Arg()
{
Value = default(T);
}
public T Value { get; set; }
public static implicit operator Arg<T>(T value)
{
return new Arg<T> { Value = value };
}
public override string ToString()
{
return Value?.ToString();
}
}
然后你就可以写:
Arg<string> s = "Hello, world";
Console.WriteLine(s);