C# 有没有自动同步对象值的方法
IDE:VS2010,c#.net winforms 您好,我有3个对象obj1 obj2和obj3,obj1启动了一些值,obj2启动了一些值,我希望在obj3中作为最终对象,其中包含obj1和obj2的值,请参见以下示例:(仅当值不为null或0时,才会合并这些值C# 有没有自动同步对象值的方法,c#,winforms,C#,Winforms,IDE:VS2010,c#.net winforms 您好,我有3个对象obj1 obj2和obj3,obj1启动了一些值,obj2启动了一些值,我希望在obj3中作为最终对象,其中包含obj1和obj2的值,请参见以下示例:(仅当值不为null或0时,才会合并这些值 AClass obj1 = new AClass(); obj1.value1 = 14; AClass obj2 = new AClass(); obj2.value2 = 15; //I want AClass obj3 =
AClass obj1 = new AClass();
obj1.value1 = 14;
AClass obj2 = new AClass();
obj2.value2 = 15;
//I want
AClass obj3 = new AClass();
obj3 = obj1 + obj2; // this is not available
//I want to get obj3.value1 = 14 and obj3.value2 = 15 (initiated)
有没有更快或预定义的方法来实现这一点。没有,没有内置的合并支持……除非
value1
和value2
的类型是int?
,否则您可能无法区分“未初始化”和“初始化为0”之间的区别。(如果它们是属性,您可以为它们提供自定义设置器,并记住以这种方式设置的属性。)
我建议您创建自己的静态方法来返回合并实例,而不是使用+
:
AClass obj3 = AClass.Merge(obj1, obj2);
当然,您需要在该方法中编写逻辑。如果不了解更多关于您的需求和类型的信息,我们很难给出该方法的示例代码。您可以使用C中一种称为“运算符重载”的技术,下面是一个示例:
class AClass
{
public int value1 { get; set; }
public int value2 { get; set; }
public AClass()
{
}
public AClass(int value1, int value2)
{
this.value1 = value1;
this.value2 = value2;
}
public static AClass operator +(AClass obj1, AClass obj2)
{
return new AClass(obj1.value1, obj2.value2);
}
}
private void Form1_Load(object sender, EventArgs e)
{
AClass obj1 = new AClass();
obj1.value1 = 14;
AClass obj2 = new AClass();
obj2.value2 = 15;
AClass obj3 = new AClass();
obj3 = obj1 + obj2;
label1.Text = obj3.value1.ToString(); // Output 14
label2.Text = obj3.value2.ToString(); // Output 15
}
这里有一个关于操作符重载的例子
希望这有帮助。您可以在c#中执行运算符重载,下面是代码
private class AClass
{
public int Value { get; set; }
public static AClass operator +(AClass a, AClass b)
{
return new AClass
{
Value = (a != null ? a.Value : 0) + (b != null ? b.Value : 0)
};
}
}
像这样消费
AClass a = new AClass() { Value = 5 };
AClass b = new AClass() { Value = 3 };
AClass c = a + b;
不允许运算符重载