在我们的程序中经常出现这样的代码:

 //成员变量

        public string Name;
        //类属性
        private string name;
        public string Name
        {
            set { name = value; }
            get { return name; }
        }

像上面这样的代码到底两者有什么不一样呢?对其他对象来说,这两者都是同样的访问,同样的赋值。一个是变量,一个是属性。

那么 为什么要这样做呢?

首先基于面向对象的原则来看,面向对象编程的目的是要坐到抽象、封装;在类中,变量是对类本人而言的,我们把它叫做域,它可以是public、private等;属性石类外部显示出来的特性,虽然变量可以为public,单这样不利于类的封装,因为外部使用者可以对类进行直接的修改。所以我们可以用属性,我们只是公开他们的属性,至于如何对其进行赋值(set)如何取值(get)都进行了封装,对于类外部来说这是不可见的,我们能使用它,单不能控制它,如何控制操作时类自身决定的,这就是它们原则上的区别。

总结一下几点:

1、属性是对字段的封装

2、属相可以控制读写,变量不可以

3、属性可以进行赋值操作,变量不可以

4、对一个对象进行数据绑定时,数据是可以正常绑定的,变量就不行。当需要将类

中的一个值设为public时,应该是使用属性而不是变量。

 

@符号的妙用

    1:字符串转义符  

          “\”在c#中式特殊符号,表示转义字符,如果表示普通字符串“\” 则需要\\才可以,通过@符号,可以将“\”当普通字符使用。

                                      string path="F:\\vs2008\\1.txt"  ;

                                      string path=@"F:\vs2008\1.txt";   这个样子就可以了。
    2:用@表示跨行字符串
    3:保留关键字标示符   在C#规范中,@可以作为标示符(类名,变量名,方法名)的第一个字符,以允许c#中保留关键字作为自己定义的标示符。
     如 public class @class