我需要添加两个构造函数值,例如:我创建一个类并显式创建参数化构造函数。我现在需要添加values(c1+c2)
,并且值应该存储在c3
我怎样才能获得
请提供代码。
Class1 c1 = new Class1(10, 20);
Class1 c2 = new Class1(30,40);
Class1 c3 = c1 + c2;
当我尝试为c3
对象添加两个构造函数值时,出现错误,即“+”运算符无法应用。
答案 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;
}