添加两个构造函数的值

时间:2016-06-06 12:21:15

标签: c#

我需要添加两个构造函数值,例如:我创建一个类并显式创建参数化构造函数。我现在需要添加values(c1+c2),并且值应该存储在c3我怎样才能获得

请提供代码。

Class1 c1 = new Class1(10, 20);
Class1 c2 = new Class1(30,40);
Class1 c3 = c1 + c2;

当我尝试为c3对象添加两个构造函数值时,出现错误,即“+”运算符无法应用。

2 个答案:

答案 0 :(得分:1)

看来,你想要一个运算符

  public class Class1 {
    public int X {get; private set;}
    public int Y {get; private set;}

    public Class1(int x, int y) {
      X = x;
      Y = y;  
    }

    public static Class1 operator +(Class1 left, Class1 right) {
      //TODO: put relevant logic here
      return new Class1(left.X + right.X, left.Y + right.Y);
    }
  }

 ...

  Class1 c1 = new Class1(10, 20);
  Class1 c2 = new Class1(30, 40);

  // c3.X == 40; c3.Y == 60 
  Class1 c3 = c1 + c2;

答案 1 :(得分:0)

这是一个解决方案。您所描述的内容(使用加号表示两个Class1实例之间的操作)是运算符重载,但您不需要该级别的语言集成来获得所需的结果。

假设期望的结果是:

提供Class1的这个定义:

class Class1
{
    Class1(int a, int b)
    {
        PropA = a;
        PropB = b;
    }

    int PropA { get; set; }
    int PropB { get; set; }
}

您的Add功能应如下操作:

public Class1 Add(Class1 other)
{
    if (other == null) { throw new ArgumentNullException("other"); }
    var output = new Class1(this.PropA + other.PropA, this.PropB + other.PropB);
    return output;
}