using System;
using System
using System
namespace ConsoleApplication
{
class Person
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
public Person(string name)
{
this
}
}
class Program
{
static void Main(string[] args)
{
string a = new string(new char[] {
string b = new string(new char[] {
Console
Console
object g = a;
object h = b;
Console
Console
Person p
Person p
Console
Console
Person p
Person p
Console
Console
Console
}
}
}
答案為何為true true false true false false true true
因為值類型是存儲在內存中的堆棧(以後簡稱棧)
而字符串是一個特殊的引用型類型
因此在上面的例子中
對於 第二對輸出 object g = a 和object h = b
string a=
string b=
則
對於p
對於p
MSDN中就有介紹啊
下面的規則概括了 Equals 方法和等號運算符 (==) 的實現准則
每次實現 Equals 方法時都實現 GetHashCode 方法
每次實現相等運算符 (==) 時
每次實現 IComparable 時都要重寫 Equals 方法
實現 IComparable 時
不要在 Equals
有關 Equals 方法的相關信息
在值類型中實現相等運算符 (==)
大多數編程語言中都沒有用於值類型的默認相等運算符 (==) 實現
應考慮在值類型中實現 Equals 方法
每次重寫 Equals 方法時都實現相等運算符 (==)
在引用類型中實現相等運算符 (==)
大多數語言確實為引用類型提供默認的相等運算符 (==) 實現
如果類型是 Point
好了
Console
object s =
object t =
Console
string a =
string b = String
string c =
Console
Console
Console
答案
From:http://tw.wingwit.com/Article/program/net/201311/11844.html