public class Account{
  //attributes
  private double balance;  //properties
  public double Balance {
    get { return balance; }
    set { balance = value; }                      
  }
  
  //constractor
  public Account() {
  Balance = 0;
  }
  
  //method
  public void DepositMoney(double f) {
    Balance = Balance + f;
  }
}
我的疑惑是,在method里,应该是 Balance = Balance + f;  还是balance = balance + f;  ?

解决方案 »

  1.   

    都可以.没什么特别规定.
    个人觉得,只是说:
    balance是类内部的成员的,不对外公开 
    Balance 是属性对外公开的,那么你的方法也是对外公开的,当然用Balance 好点,而不是把自己私有内部成员放方法里面
      

  2.   

    attributes通常称为字段;而properties成为属性(器),用于获取和设置字段值的。
    等号后边的Blance是获取(get)blance的值的,然后与f相加,最后等号左边赋给Blance,会调用Blance的get来设置blance值。一般情况用属性(器)来操作字段的值,如果是用字段直接操作值也可以。
      

  3.   

    看你具体要求咯
    你这里最好直接是用内部的变量,而属性是开放给外面用的,除非你有这种需求:
    public class Account{
      //attributes
      private double balance;  //properties
      public double Balance {
        get { return balance×100; }
        set { balance = value/100; }                      
      }
      
      //constractor
      public Account() {
      Balance = 0;
      }
      
      //method
      public void DepositMoney(double f) {
        Balance = Balance + f; //如果想使用运算后的结果就用属性
         balance = balance + f; //如果balance和Balance代表不同的逻辑而且只想用原始值就用balance
      }
    }
      

  4.   

    public Account() {
      Balance = 0;
      }这样默认就是调用了SET访问了,
    不过觉得还是balance=balance+f;好点
      

  5.   

    小写的那个是字段,我想其实你的那个地方应该是写小写的。
    大写的那个是属性。我认为你的代码写成这样比较好:
    public class Account{
      //attributes
      private double balance;  //properties
      public double Balance {
        get { return balance; }
        set { balance = value; }                      
      }
      
      //constractor
      public Account() {
      balance = 0;
      }
      
      //method
      public void DepositMoney(double f) {
        balance = balance + f;
      }
    }
    字段设置成私有的,属性设置成公有的。这样的话,你就可以通过属性来访问你的那个私有的字段,包括写跟读。这个是封装也就是保证了安全,但是在C#反射的强大的功能下,你上面的那个私有字段,也可以在外部直接访问到。
      

  6.   

    同意3、4楼兄弟的意见。如果使用Balance,实际上相当于调用了get(return balance;)这里的句子。如果你只需要用到balance,那就直接用吧,何必非要用Balance呢(多执行了一个return语句)一般情况下,Balance这种是用于外部类调用的,所以它的前面一般会有public,如果是balance,一般只给类内部方法使用,所以在声明时,会用private。