c#中的重载=运算符

时间:2016-03-12 17:40:29

标签: c# operator-overloading

让我说我有班级:

var f = new Foo(1);
f = 5; // How can I do this? In here I want to change => f.Value
var x = f.Value; // I will like x to equal to 5 in here

我想做以下事情:

 List<String> list = Arrays.asList(animals); 

2 个答案:

答案 0 :(得分:6)

C#中,您无法覆盖assign运算符(=)。

您可以做的是定义隐式转换:

class Foo
{
    public Foo(int value)
    {
        this.Value = value;
    }
    public int Value { get; private set; }

    public static implicit operator Foo(int value)
    {
        return new Foo(value);
    }
}

这允许您隐式地从int转换为Foo

Foo f = 5;

Here C#中可重载运算符的列表。

答案 1 :(得分:1)

从我对你的问题的理解,如果你真的需要改变Value的值,你为什么不公开Value的setter,以便你可以使用, f.Value = 5