C# 中的重载 = 运算符

Overload = operator in c#

假设我有 class:

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

我想做以下事情:

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

根据我从你的问题中了解到的情况,如果你真的需要改变 Value 的值,为什么不将 Value public 设为 setter,这样你就可以使用, f.Value = 5

C# 中,您不能覆盖赋值运算符 (=)。

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

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;

HereC#.

中的可重载运算符列表