public static Calculator operator - (Calculator c1)
 {
   c1.number1 = - c1.number1;
   c1.number2 = - c1.number2;
 }
请那为大家帮我解释一下!

解决方案 »

  1.   

    为类Calculator 定义了“-”操作,这说明可以使用减号来操作Calculator 的实例了,比如:Calculator c1;
    Calculator c2;
    Calculator c=c1-c2;
      

  2.   

    public static Calculator operator -(Calculator c1) 

      c1.number1 = - c1.number1; 
      c1.number2 = - c1.number2;   return c1;                         //<------
    }这是个单目运算符
    Calculator c1; 
    Calculator c2 = -c1;
      

  3.   

    上面几位,这是个单目操作符呀!
    是运算符重载,只不过重载的不是减号,而是负号。用于取某个Caculator对象的负数。
    例如定义后,可以这么写代码:Calculator data1 = - data2;
      

  4.   

    比较好的方式是不改变c1,而是另外返回一个新的实例        public static Calculator operator -(Calculator c1)
            {
                Calculator c = new Calculator();            //<---- 这样c1就不会被改变了。
                c.number1 = -c1.number1;
                c.number2 = -c1.number2;            return c;
            }
      

  5.   

    同意gomoku的意见,不过如果需要改变c1,要加ref
    public static Calculator operator - (ref Calculator c1) 

      c1.number1 = - c1.number1; 
      c1.number2 = - c1.number2; 

      

  6.   

    引用 7 楼 gomoku 的回复: 
    比较好的方式是不改变c1,而是另外返回一个新的实例 C# code 
    public static Calculator operator -(Calculator c1) 

    Calculator c = new Calculator();            // <---- 这样c1就不会被改变了。 
    c.number1 = -c1.number1; 
    c.number2 = -c1.number2; return c; 
    } 同意gomoku的意见,不过如果需要改变c1,要加ref 
    public static Calculator operator - (ref Calculator c1) 

    c1…