中の技術日誌
 ホーム / 上へ

わんくまライブラリ 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

勉強会: 05/18 大阪 登録受付中

中の技術日誌
コンテンツ
わんくま同盟
わんくま同盟
わんくま同盟
広告
バナー
MVP LOGO
MSMVP Visual C# Since 2004/04-2007/03
MCP LOGO
070-316
姉妹サイト
姉妹サイト:じゃんぬのC#, VB.NET 入門
じゃんぬの
C#, VB.NET 入門
検索
Google

ブログ本家
広告