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