有没有自动同步对象值的方法

本文关键字:方法 对象 同步 有没有 | 更新日期: 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)

有没有更快或预定义的方法可以做到这一点。

有没有自动同步对象值的方法

不,没有内置的合并支持...除非value1value2的类型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;