usingsystem;
using
system.diagnostics;
using
system.text;
using
system.collections;
using
system.collections.generic;
class
test
class cdefoveride //
c# 的所有類都預設繼承於object,這裡不用寫繼承,也可以寫,有點詭異
}static
void
main()
);string sb = new
string(new
char );
print(sa.gethashcode() + "
," +sb.gethashcode());
print(sa.equals(sb));
//true,呼叫string.equals(string)
print(sa == sb);//
true,string的operator ==
object oa =sa;
object ob =sb;
print(oa.equals(ob));
//true, 多型呼叫,實際呼叫的是string.equals(object)
print(oa == ob); //
false
object oc = new
object
();
object od = new
object
(); print(oc.equals(od));
//false, object.equals(object)
print(oc == od);//
false
//如果沒有實現重寫,對於引用型別,那麼原始的object.equals()與 ==沒有任何區別,二者總能得到一樣的結果
//因為引用型別其實是乙個指標,==比較的是指標的值,也就是位址,equals比較的也是位址。
//string類重寫了==和equals,實現了字串內容的比較,而非位址的比較。
object o1 = new
cdefoveride();
object o2 = new
cdefoveride();
print(o1.equals(o2));
//false, 多型呼叫, cdefoveride.equals(object)
int ia = 12
;
short isa = 12
; print(ia.equals(isa));
//true, short可以轉為int,故多型呼叫int32.equals(int32 obj)
print(isa.equals(ia)); //
false, int不能直接轉為short,故多型呼叫int16.equals(object obj)
}}
posted on 2016-11-04 23:21收藏
c equals與 的區別
對於值型別,如果物件的值相等,則相等運算子 返回 true,否則返回 false。對於string 以外的引用型別,如果兩個物件引用同乙個物件,則 返回 true。對於 string 型別,比較字串的值。操作比較的是兩個變數的值是否相等。equals 方法比較的是兩個物件的內容是否一致 equals...
c Equals和 的區別
值型別是儲存在記憶體中的堆疊 以後簡稱棧 而引用型別的變數在棧中僅僅是儲存引用型別變數的位址,而其本身則儲存在堆中。操作比較的是兩個變數的值是否相等,對於引用型變數表示的是兩個變數在堆中儲存的位址是否相同,即棧中的內容是否相同。equals操作表示的兩個變數是否是對同乙個物件的引用,即堆中的內容是否...
sizeof 理解 原理 本質 用法
sizeof 不是操縱符,也不是函式,因為在執行階段沒有它,它沒有被編譯成機器 指令。可以把它看做乙個巨集。sizeof 在編譯期間就處理完成了。所以像size a 3 這種,a是不會被賦值的。a還是原來的值。cout 在理解了sizeof這些原理後,基本用法就好理解,只要把握好它作用在編譯階段就不...