わんくまライブラリ Wankuma.CollectionsByteArrayComparerクラス Version1
2005/07/21
この文書はVisual Studio 2003(.NET1.1)をベースに記述されています。それ以降のバージョンや、あなたが読んでいる時点では変更されている可能性があります。
またバージョンアップされている場合にはなんらかかの不具合を含んでいる可能性があります。
ソースファイルへ
Wankuma.CollectionsByteArrayComparer1s.htm
ソースファイル直接ダウンロードへ
Wankuma.CollectionsByteArrayComparer1c.txt
利用規約へ
../kiyaku.htm
クラスの説明
IComparerインターフェイスを実装したクラスで、バイト配列同士の比較をサポートします。
(object, object)で、ノーチェックキャストしていたりちょっと怖いところはありますね。(^^;;
スタティックメソッドの説明
public int Compare(byte[] x, byte[] y)
byte[] の比較です。
テストコード
標準的なSystem.Collections.Comparerでの文字列比較と同じ動きになるようになっています。
C#
{ Wankuma.Collections.ByteArrayComparer BAC = new Wankuma.Collections.ByteArrayComparer(); byte[] x,y; x = new byte[]{1,2,3,4}; y = new byte[]{1,2,3}; System.Diagnostics.Debug.WriteLine( "xの方が長い" + BAC.Compare(x, y) ); System.Diagnostics.Debug.WriteLine( "yの方が長い" + BAC.Compare(y, x) ); x = new byte[]{1}; y = new byte[]{2}; System.Diagnostics.Debug.WriteLine( "xの方が大きい" + BAC.Compare(x, y) ); System.Diagnostics.Debug.WriteLine( "yの方が大きい" + BAC.Compare(y, x) ); x = new byte[]{1,2,3}; y = new byte[]{1,2,3}; System.Diagnostics.Debug.WriteLine( "完全一致" + BAC.Compare(x, y) ); } { System.Collections.Comparer comp = System.Collections.Comparer.DefaultInvariant; string x,y; x = "1234"; y = "123"; System.Diagnostics.Debug.WriteLine( "xの方が長い" + comp.Compare(x, y) ); System.Diagnostics.Debug.WriteLine( "yの方が長い" + comp.Compare(y, x) ); x = "1"; y = "2"; System.Diagnostics.Debug.WriteLine( "xの方が大きい" + comp.Compare(x, y) ); System.Diagnostics.Debug.WriteLine( "yの方が大きい" + comp.Compare(y, x) ); x = "123"; y = "123"; System.Diagnostics.Debug.WriteLine( "完全一致" + comp.Compare(x, y) ); }
VB
Dim BAC As Wankuma.Collections.ByteArrayComparer = New Wankuma.Collections.ByteArrayComparer Dim x, y As Byte() x = New Byte() {1, 2, 3, 4} y = New Byte() {1, 2, 3} System.Diagnostics.Debug.WriteLine("xの方が長い" & BAC.Compare(x, y)) System.Diagnostics.Debug.WriteLine("yの方が長い" & BAC.Compare(y, x)) x = New Byte() {1} y = New Byte() {2} System.Diagnostics.Debug.WriteLine("xの方が大きい" & BAC.Compare(x, y)) System.Diagnostics.Debug.WriteLine("yの方が大きい" & BAC.Compare(y, x)) x = New Byte() {1, 2, 3} y = New Byte() {1, 2, 3} System.Diagnostics.Debug.WriteLine("完全一致" & BAC.Compare(x, y)) Dim comp As System.Collections.Comparer = System.Collections.Comparer.DefaultInvariant Dim sx, sy As String sx = "1234" sy = "123" System.Diagnostics.Debug.WriteLine("xの方が長い" & comp.Compare(sx, sy)) System.Diagnostics.Debug.WriteLine("yの方が長い" & comp.Compare(sy, sx)) sx = "1" sy = "2" System.Diagnostics.Debug.WriteLine("xの方が大きい" & comp.Compare(sx, sy)) System.Diagnostics.Debug.WriteLine("yの方が大きい" & comp.Compare(sy, sx)) sx = "123" sy = "123" System.Diagnostics.Debug.WriteLine("完全一致" & comp.Compare(sx, sy))
結果
xの方が長い1 yの方が長い-1 xの方が大きい-1 yの方が大きい1 完全一致0 xの方が長い1 yの方が長い-1 xの方が大きい-1 yの方が大きい1 完全一致0