static void Main(string[] args)
{
StringBuilder c = new StringBuilder("AAA");
StringBuilder d = new StringBuilder("AAA");
Console.WriteLine(c==d); //false
Console.WriteLine(c.Equals(d));//true
}
语句里,
StringBuilder c = new StringBuilder("AAA"); 初始化类还可以带参数吗,比如('AAA"),
这和StringBuilder c = new StringBuilder(); 有什么不一样吗?
我总是不清楚这个语法,请解释
初始化类可以带参数,只要建类时写了含参构造器就可以。
构造器是用来创建类的实例时初始化实例的。
构造器分默认和非默认的。默认的就是不含参的。
StringBuilder c = new StringBuilder("AAA"); 就是创建实例c时用带参的构造器,能这么使用不报错,肯定是写类时就写了有一个参数的构造器
StringBuilder c = new StringBuilder(); 使用默认构造器初始化实例c
一个是初始化的是有“aaa”
另一个就是为空
区分“==”和“Equals”的区别,
Equals转的定义:
返回对象中两个值的比较。
而‘==’,实例化后两个对象分别是c和d,很明显两个对象不相等,对象中的字符串相等所以得到:
Console.WriteLine(c==d); //false
Console.WriteLine(c.Equals(d));//true
如果还不明白,那就反汇编下看看吧:
现在需要大白话来把最复杂的东西用最简单的方式表达出来,您,这位大侠,把简单的东西用最复杂的方式表现出来了,让人高山仰止
@hunpo: 这个问题c和d是实例化不同的两个对象所以不相等,而Equals比较的是对象返回值是否相等。之所以写那么多,为了让你知其所以然。建议还是去园子搜索一片文章好好理解下,这样知识就可以消化了不是?