我混亂有關(C#) 使用==
當我用文字串像這裏使用==操作符:混亂在C#
object a="hello";
object b="hello";
比較a==b
將是真實的。
但是當我使用對象喜歡這裏:
object c=new StringBuilder("hello").ToString();
object d=new StringBuilder("hello").ToString();
比較a==b
將是錯誤的。
即使a,b,c,d
編譯時的所有類型System.Object和 ==
運算符比較值取決於它們在編譯時的值。
我使用擴展方法在編譯時得到varabiles類型:
public static class MiscExtensions
{
public static Type GetCompileTimeType<T>(this T dummy)
{ return typeof(T); }
}
與'=='相比,Interned字符串對象作爲引用相等將返回false(請參閱https://stackoverflow.com/questions/1766492/overloading-operator-versus-equals)。 –
我認爲你對C#中的不同類型更加困惑。 「Object」,「string」和「StringBuilder」是不一樣的,這就是爲什麼它們有不同的名字。 ;) – waka
類似的問題在這裏:https://stackoverflow.com/questions/27710665/comparing-values-using-operator – Winnie