C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: オブジェクトの同値チェック


(過去ログ 115 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■67828 / inTopicNo.1)  オブジェクトの同値チェック
  
□投稿者/ morimori (3回)-(2013/09/04(Wed) 14:27:07)

分類:[C#] 



開発環境
Windows7 Home
使用言語
2010 C# Professional

morimoriと申します。

class SampleObj
{
int Key;
int Value;
}

のような独自クラスでフィールドの値の同値チェックをする場合、
同値チェックのためのメソッドを内部にこしらえるのも一つの方法かもしれないですが
他に効率のいい方法はないのでしょうか。


引用返信 編集キー/
■67830 / inTopicNo.2)  Re[1]: オブジェクトの同値チェック
□投稿者/ 魔界の仮面弁士 (326回)-(2013/09/04(Wed) 14:55:25)
No67828 (morimori さん) に返信
> のような独自クラスで
public 公開されたメンバーが無く、すべてのメンバーが private なクラスですか?


> 値の同値チェックをする場合、
関連情報として、このあたりとか。
http://msdn.microsoft.com/ja-jp/library/ms173147.aspx
http://smdn.jp/programming/netfx/comparison/0_comparison/


> 同値チェックのためのメソッドを内部にこしらえるのも一つの方法かもしれないですが
比較のための仕組みは、自分で実装した方が良いでしょう。

同値チェックだけでなく、大小比較が必要になった場合、どのフィールド/プロパティから
比較するのかを定めねばなりませんし、一部のメンバーは、比較対象から外したいということも
あるかと思います。あるいは、内部値が違っていても、同じ値と見なしたい場合も考えられます。

たとえば decimal 構造体の場合、
 decimal a = 1.234000m;
 decimal b = 1.2340m;
は、Decimal.GetBits() メソッドで確認すると別のバイナリとして格納されており、
.ToString() した結果も両者で異なりますが、普段は同一値として扱いますよね。
引用返信 編集キー/
■67836 / inTopicNo.3)  Re[2]: オブジェクトの同値チェック
□投稿者/ morimori (4回)-(2013/09/04(Wed) 16:27:34)
回答ありがとうございます。
そうですね。独自のほうが融通が後々聞きますよね。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -