首页 新闻 会员 周边

C#的一个简单语句的理解问题

0
悬赏园豆:5 [已解决问题] 解决于 2013-01-02 17:32
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(); 有什么不一样吗?
我总是不清楚这个语法,请解释
绝对菜鸟的主页 绝对菜鸟 | 初学一级 | 园豆:27
提问于:2013-01-01 23:49
< >
分享
最佳答案
0

初始化类可以带参数,只要建类时写了含参构造器就可以。

构造器是用来创建类的实例时初始化实例的。

构造器分默认和非默认的。默认的就是不含参的。

StringBuilder c = new StringBuilder("AAA"); 就是创建实例c时用带参的构造器,能这么使用不报错,肯定是写类时就写了有一个参数的构造器
StringBuilder c = new StringBuilder(); 使用默认构造器初始化实例c
收获园豆:5
指尖的乐律 | 菜鸟二级 |园豆:237 | 2013-01-02 09:03
其他回答(2)
0

一个是初始化的是有“aaa”

另一个就是为空

chenping2008 | 园豆:9836 (大侠五级) | 2013-01-02 08:03
0

区分“==”和“Equals”的区别,

 Equals转的定义:

返回对象中两个值的比较。

而‘==’,实例化后两个对象分别是c和d,很明显两个对象不相等,对象中的字符串相等所以得到:

Console.WriteLine(c==d); //false
 Console.WriteLine(c.Equals(d));//true

如果还不明白,那就反汇编下看看吧:

伏草惟存 | 园豆:1420 (小虾三级) | 2013-01-02 13:51

现在需要大白话来把最复杂的东西用最简单的方式表达出来,您,这位大侠,把简单的东西用最复杂的方式表现出来了,让人高山仰止

支持(0) 反对(0) 绝对菜鸟 | 园豆:27 (初学一级) | 2013-01-02 17:32

@hunpo: 这个问题c和d是实例化不同的两个对象所以不相等,而Equals比较的是对象返回值是否相等。之所以写那么多,为了让你知其所以然。建议还是去园子搜索一片文章好好理解下,这样知识就可以消化了不是?

支持(0) 反对(0) 伏草惟存 | 园豆:1420 (小虾三级) | 2013-01-02 17:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册