如鹏网.Net高级技术4.String特点及常用方法

String特点及常用方法

字符串的特性:不可变性和"暂存池"(常量池)的特性

通过案例了解字符串中的方法.

如何比较两个对象是不是同一个对象的最准确的方法ReferenceEquals

-------------------------------------------------

 不可变性:str 被赋值后 内存地址是不一样的。

只是字符串的值是常量值时,就指向暂存池中的对象。

string s1="1",s2="2",s3="3";

string str="123";//指向暂存池中的对象。

stirng s=s1+s2+s3; //不是指向暂存池中的对象。

此时 str!=s;

字符串:变量名指向 暂存池中的对象。

------------------------------------------------

 比较两个对象是否为同一个对象:地址是否相同

课件中讲解Equals和"=="两种方式比较两个对象是不是同一个对象已经不准确了,因为都可以被重写.

只有通过object的ReferenceEquals方法才更加的准确

 因为Equals可以被重写,所以比较不准确。

比较两个对象是否为同一个对象,什么是同一个对象?(地址)

如何判断str1与str2是否为同一个对象?

Equals和== Equals已经不可靠了。"=="也不靠谱了。

String类的==运算符,内部调用的也是Equals("=="运算符重载后也是调用的 EqualsHelper()来判断的,与Equals(string)方法一样。只是比较值是否相等)

为什么字符串的Equals和别的不一样?

string的Equals方法判断的是字符串的内容是否相同(重写了Object中的Equals方法。)

查看判断两个对象是否相同要用:object.ReferenceEquals();

   即时窗口中:*p1  获得地址

同一个对象判断使用:object.ReferenceEquals(s1,s2);最准确判断同一个对象。

如鹏网:http://www.rupeng.com

原文地址:https://www.cnblogs.com/wjs5943283/p/5242839.html