6

在 C# 中执行此操作是否安全?

field = Property = value;

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

4

1 回答 1

5

使用

    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# 语言基础

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

整数a,b,c,d;

a = b = c = d = 5;

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

于 2013-06-21T09:40:10.137 回答