抽象类中的隐式转换

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


以上是抽象类中的隐式转换的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>