C#中一些易混知识的比较

 Equals 和==的区别

 

        C#中有两种不同的相等:引用相等和值相等

        ==是比较两个变量的值是否相同或两个引用是不是指向同一个内存地址。

        Equals()方法是比较两个对象指向内存空间里的内容是不是相同。也就是比较两个“引用类型”是否是对同一对象的引用,即两个对象的内容是否相同。


 

公共变量和属性的区别


 

       变量对于类本身而言,称为域。

       属性是类的外部显示出来的特性,只是公开属性,如何进行赋值(set)和如何进行取值(get)都进行了封装,对于类外部是不可见的。对于外部使用者来说只能够使用它,而不能够控制它。如何控制操作是由类本身决定的。

   区别:

      属性是对字段的封装

      属性可以控制读写变量不可以。(set get

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

      对一个对象进行数据绑定时,数据是可以正常绑定的,变量就不行。当需要将类中的一个值设为public时,应该是使用属性而不是变量。

 

一个类,有时候搞不清楚到底用成员变量还是属性。 

如: 

成员变量

 

public string Name; 

 

或者用属性 

 

private string name 
public string Name
{ 
       get
       { 
               return name;
       } 
       set 
       { 
               name = value; 
       }
}


 


        属性与成员变量类似,它们都提供数据存储,但属性的功能远比成员变量强大。属性由特殊方法(Get  和   Set   访问器)访问。Get   和   Set  访问器允许在设置或检索属性之后验证属性值、执行其他代码或执行其他任务。

 

 

例如

成员变量这样写 

 

public readonly string Name; 



那还是可以是只读了

 


private string name;
public string Name
{ 
       get 
       { 
               return name;
       }
}


 

 

 


 

 

      面向对象的编程方法是要抽象、封装;在类中,定义的变量是正对类本身而言,我们把它们叫做域。它可以为public   ,private等;属性是针对外部看到的类的特性,是类展示给外部使用者的特性。前面我们讲到了域可以为public,但这样把域申明为public不利于类的封装,因为外部使用者可以对类进行直接修改。所以我们就可以用到属性,我们只是公开它们的属性,至于如何对其进行赋值(set)如何进行取值get)都已经进行了封装,对于类外部是不可见的。对于外部使用者来说只能够使用它,不能控制它,如何控制操作是由类自身决定的。


 

@符号的妙用


1:字符串转义符  

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

 

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

string path=@"F:\vs2008\1.txt"; //这个样子就可以了。

 

                           

    2:用@表示跨行字符串

    3:保留关键字标示符  C#规范中,@可以作为标示符(类名,变量名,方法名)的第一个字符,以允许c#中保留关键字作为自己定义的标示符。

    如: 

 

public class @class


 


 


 

posted @ 2013-06-20 18:35  jlins  阅读(176)  评论(0编辑  收藏  举报