using System;
using System.Collections.Generic;
using System.Text;
namespace String._002
{
class Program
{
static void Main(string[] args)
{
string s = "Hello";
string t = (string)s.Clone(); // 不复制;s 和 t 引用同一个字符串
//相当于 string t = "Hello"也相当于string t = s;
bool testbool = (object)s == (object)t;
Console.WriteLine(testbool); //true
string u = string.Copy(s); // 进行复制,s 和 u 引用不同的对象
Console.WriteLine(s == u);// true 判别str的值是否和strCopy的值是否相等\\实际上是值比较
Console.WriteLine((object)s == (object)u);// false 判别str所指的对象是否和strCopy所指的对象相同
//实际上是比较两个引用是否相等,也是比较地址是否相等
Console.WriteLine(Object.ReferenceEquals(s, t));// true 判别s所指的对象是否和t所指的对象相同
//实际上是比较两个引用是否相等,也是比较地址是否相等
Console.WriteLine(Object.ReferenceEquals(s, u));// false 判别s所指的对象是否和u所指的对象相同
//实际上是比较两个引用是否相等,也是比较地址是否相等
Console.WriteLine(s.Equals(t)); //true
Console.WriteLine(Equals(s, t)); //true
Console.WriteLine(s.Equals(u)); //true
Console.WriteLine(Equals(s, u)); //true
int a = 8;
int b = 8;
Console.WriteLine((object)a == (object)b);//false 比较的是引用
Console.WriteLine(ReferenceEquals(a, b)); //false 比较的是引用
Console.WriteLine(a.Equals(b)); //true 比较的是值和类型
Console.WriteLine(Equals(a, b)); //true 比较的是值和类型
string ret = string.Format("s same as t: {0}, s same as u: {1}",
Object.ReferenceEquals(s, t), (object)s == (object)u);
Console.WriteLine(ret);
本文转自terryli51CTO博客,原文链接:http://blog.51cto.com/terryli/519428 ,如需转载请自行联系原作者