假设类是一个银行,既能存钱也能取钱.
private
private
{
m_money
比如
private
public
可以看出,get\set有一种函数的特征。
get
二是用来建立约束的,比如,实现“有我没你”这种约束。
三是用来响应属性变化事件,当属性变化时做某事,只要写在SET
有两种途径揭示类的命名属性——通过域成员或者通过属性。前者是作为具有公共访问性的成员变量而被实现的;后者并不直接回应存储位置,只是通过
当你想读出或写入属性的值时,存取标志限定了被实现的语句。用于读出属性的值的存取标志记为关键字get,而要修改属性的值的读写符标志记为set。
public class House
{
private int m_nSqFeet;
public int SquareFeet
{
get
{
return m_nSqFeet;
}
set
{
m_nSqFeet = value;
}
}
}
class TestApp
{
public static void Main()
{
House myHouse = new House();
myHouse.SquareFeet = 250;
Console.WriteLine(myHouse.SquareFeet);
}
}
House类有一个命名为SquareFeet的属性,它可以被读和写。实际的值存储在一个可以从类内部访问的变量中——如果你想当作一个域成员重写它,你所要做的就是忽略存取标志而把变量重新定义为:
public
对于一个如此简单的变量,这样不错。但是,如果你想要隐藏类内部存储结构的细节时,就应该采用存取标志。在这种情况下,set
除了能够隐藏实现细节外,你还可自由地限定各种操作:
get和set:允许对属性进行读写访问。
get
set
除此之外,你可以获得实现在set标志中有效代码的机会。例如,由于种种原因(或根本没有原因),你就能够拒绝一个新值。最好是没有人告诉你它是一个动态属性——当你第一次请求它后,它会保存下来,故要尽可能地推迟资源分配