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; ?
个人觉得,只是说:
balance是类内部的成员的,不对外公开
Balance 是属性对外公开的,那么你的方法也是对外公开的,当然用Balance 好点,而不是把自己私有内部成员放方法里面
等号后边的Blance是获取(get)blance的值的,然后与f相加,最后等号左边赋给Blance,会调用Blance的get来设置blance值。一般情况用属性(器)来操作字段的值,如果是用字段直接操作值也可以。
你这里最好直接是用内部的变量,而属性是开放给外面用的,除非你有这种需求:
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
}
}
Balance = 0;
}这样默认就是调用了SET访问了,
不过觉得还是balance=balance+f;好点
大写的那个是属性。我认为你的代码写成这样比较好:
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#反射的强大的功能下,你上面的那个私有字段,也可以在外部直接访问到。