多重赋值(字段 = 属性 = 值)

Posted

技术标签:

【中文标题】多重赋值(字段 = 属性 = 值)【英文标题】:Multiple assignment (field = Property = value) 【发布时间】:2013-06-18 09:18:43 【问题描述】:

在 C# 中这样做安全吗?

field = Property = value;

是否保证setter和getter被连续调用,field只会分配getter的结果而不一定value?编译器会将其优化为仅 value 吗?

【问题讨论】:

Property 上的 getter 在这种情况下不会被调用。如果你需要让它通过getter,你需要分开赋值:Property = value; field = Property; ***.com/questions/13714246/… 【参考方案1】:

使用

    private int tada;
    public int TADA
    
        get
        
            Console.WriteLine("GETTER");
            return tada;
        
        set
        
            Console.WriteLine("SETTER");
            tada = value;
        
    

        int s = TADA = 1;

我只将 SETTER 写入输出窗口,所以它似乎没有调用 getter。

来自C# Language Fundamentals

您甚至可以将相同的值分配给多个变量,如下所示:

int a, b, c, d;

a = b = c = d = 5;

在这种情况下,a、b、c 和 d 的值都为 5。这行得通 因为 C# 编译器首先执行最右边的赋值;那 是,d = 5。该赋值本身返回一个值,即值 5。 然后编译器将该返回值分配给 c。第二个任务 也返回一个值,依此类推,直到所有变量都已 已分配。

【讨论】:

以上是关于多重赋值(字段 = 属性 = 值)的主要内容,如果未能解决你的问题,请参考以下文章

Lua中的语句

如何使用 ruby​​ 的多重赋值为 void 变量赋值?

mysql如何把一个表的字段赋值到另一张表?

C#中字段与属性有啥不同

了解 Python 多重赋值

BeanUtils.copyProperties 选择性赋值字段