2013-06-21 48 views
6

在C#中这样做是否安全?多项任务(field = Property = value)

field = Property = value; 

能够保证所有的setter和getter相继被调用,将field只能分到吸气剂的结果,并不一定value?编译器会优化它到value吗?

+0

在这种情况下,不会调用“属性”上的吸气剂。如果你需要让它通过getter运行,你需要分离赋值:'Property = value; field = Property;' –

+0

http://stackoverflow.com/questions/13714246/assignment-and-sequence-points-how-is-this-ambiguous – Azodious

回答

4

使用

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

 int s = TADA = 1; 

我只得到SETTER写入到输出窗口,因此似乎在呼吁,吸气不。

C# Language Fundamentals

可以为相同的值,即使分配给多个变量,例如:

INT A,B,C,d;

a = b = c = d = 5;

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

相关问题