string是特殊的引用类型------特殊之处如下:
2011-10-24 17:13
218 查看
Console.WriteLine((2 + 2) == 4);
object s = 1;
object t = 1;
Console.WriteLine(s == t);
string a = "hello";
string b = String.Copy(a);
string c = "hello";
Console.WriteLine(a == b);
Console.WriteLine((object)a == (object)b);
Console.WriteLine((object)a == (object)c);
如下分析:
1.2+2 = 4没疑问
2.s==t 引用类型,比较内存地址,所以肯定不相同
3.a==b ?首先string。Copy方法是重新创建一个和原来的字符串值一样的对象,然而string是特殊的引用类型,==仅仅比较了值,故而“true'
4.(object)a == (object)b ?是因为a和b不是同一个对象,地址不一样,所以既然他们不再是string是object了,就自然不会走string那一套了,是 false
5.string a ="hello";
string c = "hello";
实际上a和c两个引用引用了内存的同一个对象(地址一样),地址一样,所以不管他们怎么包装,都是true
object s = 1;
object t = 1;
Console.WriteLine(s == t);
string a = "hello";
string b = String.Copy(a);
string c = "hello";
Console.WriteLine(a == b);
Console.WriteLine((object)a == (object)b);
Console.WriteLine((object)a == (object)c);
如下分析:
1.2+2 = 4没疑问
2.s==t 引用类型,比较内存地址,所以肯定不相同
3.a==b ?首先string。Copy方法是重新创建一个和原来的字符串值一样的对象,然而string是特殊的引用类型,==仅仅比较了值,故而“true'
4.(object)a == (object)b ?是因为a和b不是同一个对象,地址不一样,所以既然他们不再是string是object了,就自然不会走string那一套了,是 false
5.string a ="hello";
string c = "hello";
实际上a和c两个引用引用了内存的同一个对象(地址一样),地址一样,所以不管他们怎么包装,都是true
相关文章推荐
- 引用类型传递参数的特殊情况(string)
- 黑马程序员-引用类型传递参数的特殊情况(string)
- java中“==”和equals方法的区别,再加上特殊的String引用类型
- 05引用类型以及特殊引用类型string
- C# string 拥有值类型特点的特殊引用类型 “字符串具有恒等性”
- C#—特殊引用类型string
- 理解C# String类型:特殊的引用类型
- 值类型与引用类型(特殊的string) Typeof和GetType() 静态和非静态使用 参数传递 相关知识
- [No0000B4].Net中String是引用类型还是值类型,答string是特殊的引用类型
- JavaSE8基础 String是特殊的引用类型,在函数的参数传递中只能把它当做 值类型来看待
- C# 特殊的引用类型string
- string是一种特殊的引用类型,当给其赋值时会初始化一个新的string,即new String();
- string这个非常特殊的引用类型!
- string是特殊的引用类型,特殊在何处??
- String类型是特殊的引用类型
- 【转载】:C# string 特殊的引用类型
- String类型传递是值传递,char[]类型传递是引用传递
- 课堂随笔02--c#中string作为引用类型的特殊性
- java中特殊的String类型
- 在编写wpf界面时候中出现如下错误: 类型引用不明确。至少有两个名称空间(“System.Windows”和“System.Windows”)中已出现名为“VisualStateManager”的类型。请考虑调整程序集 XmlnsDefinition 特性。