【问题标题】:Overload = operator in c# [duplicate]c#中的重载=运算符[重复]
【发布时间】:2016-06-27 22:22:00
【问题描述】:

假设我有课:

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

【问题讨论】:

    标签: c# operator-overloading


    【解决方案1】:

    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# 中可重载运算符的列表。

    【讨论】:

      【解决方案2】:

      从我从您的问题中了解到,如果您确实需要更改 Value 的值,为什么不将 Value 的设置器公开,以便您可以使用, f.Value = 5

      【讨论】:

      • OP 想要覆盖赋值运算符....这不是答案而是评论
      • 只是我的构造函数采用了更多参数,而我只是古玩。 +1 感谢您的帮助
      猜你喜欢
      • 2011-10-27
      • 1970-01-01
      • 2012-12-22
      • 2016-09-26
      • 2012-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多