2017-02-08 9 views
-1

は、私はクラスを知っているwhitout 2つのオブジェクトbetwen変更を取得するための方法を作るためにreflexibeオブジェクトをテストしていると私はこれを得た:C#の反射オブジェクト、10ではなく10?

enter image description here

名、apellidoとotromasは文字列です。 edadはintです。

+0

そのにスローされますので、object.Equals代わりのvalue1.Equalsを使用するオブジェクトを使用しているため、オブジェクトが非常によいですよく同じではありません。それを比較するためにant intに変換してみてください。 'Convert.ToInt32(value)!= Convert.ToInt32(value2)'これのちょうどの数字が有効な場合 – EpicKip

+4

または 'value.Equals(value2)'を使用してください。参照equalityを最初にチェックするオブジェクトの '=='演算子。 'Equals'を使用すると、具体的な型のオーバーロードを呼び出す –

+0

あなたはその値を比較したい場合には、それらを値の型にキャストしなければなりません – GSP

答えて

2

それは、このcenarioでobject.Equals(value1, value2)を使用するのが最善です。 ==記号は実際にobject.ReferenceEqualsを実行し、両方のオブジェクトのメモリアドレスが実際の値ではなく同じかどうかを確認します。

var value1 = (object)1; 
var value2 = (object)1; 

Console.WriteLine(value1 == value2);      // False 
Console.WriteLine(object.ReferenceEquals(value1, value2)); // False 
Console.WriteLine(value1.Equals(value2));     // True 
Console.WriteLine(object.Equals(value1, value2));   // True 

、その優れたnullにVALUE1を変更する次の例では、例外が

var value1 = (object)null; 
var value2 = (object)1; 

Console.WriteLine(value1 == value2);      // False 
Console.WriteLine(object.ReferenceEquals(value1, value2)); // False 
Console.WriteLine(value1.Equals(value2));     // NullReferenceException 
Console.WriteLine(object.Equals(value1, value2));   // False 
関連する問題