相关疑难解决方法(0)

在通用c#类中链接隐式运算符

对于以下通用c#类,我想将T转换为K:

public abstract class ValueType<T,K> : IValueType<T> where K : ValueType<T,K>,new()
{     
    public abstract T Value { get; set; }     

    public static implicit operator ValueType<T,K>(T val) 
    {         
        K k = new K();
        k.Value = val;
        return k;    
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我要实现直接运算符implicit operator K(T val),则会导致编译时错误(CS0556).

我以为我可以尝试链接隐式运算符:

public static implicit operator K(ValueType<T,K> vt){
    return (K)val;
}
Run Code Online (Sandbox Code Playgroud)

但是下面的例子仍然抱怨它无法转换:

public class Test : ValueType<int, Test>
{
    public override int Value{ get; set; }
}

Test t = 6; //complains it's unable to be …
Run Code Online (Sandbox Code Playgroud)

c# abstract-class operator-overloading

6
推荐指数
1
解决办法
1444
查看次数

标签 统计

abstract-class ×1

c# ×1

operator-overloading ×1