有没有自动同步对象值的方法
本文关键字:方法 对象 同步 有没有 | 更新日期: 2023-09-27 18:32:22
IDE: VS 2010, 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 = 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;