int.Equals(byte)はtrueなのに、byte.Equals(int)はfalseなんですね。バイト列の検索には要注意ですね。でコードはこんな感じ。
private void button1_Click(object sender, EventArgs e)
{
var buf = new byte[16] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
var idx = 0;
//がっかりなコード
//for (idx = 0; idx < buf.Length; idx++)
//{
// if (buf[idx] == 9)
// {
// break;
// }
//}
//残念なコード(-1がかえる)
//idx = Array.IndexOf(buf, 9);
//普通のコード
idx = Array.IndexOf(buf, (byte)9);
System.Diagnostics.Debug.WriteLine("発見位置=" + idx);
int int1 = 1;
byte byte1 = 1;
System.Diagnostics.Debug.WriteLine("int1==byte1? ->" + (int1 == byte1));
//int1==byte1? ->Trueと表示される
System.Diagnostics.Debug.WriteLine("byte1.Equals(int1)? ->" + byte1.Equals(int1));
//byte1.Equals(int1)? ->False
}
{
var buf = new byte[16] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
var idx = 0;
//がっかりなコード
//for (idx = 0; idx < buf.Length; idx++)
//{
// if (buf[idx] == 9)
// {
// break;
// }
//}
//残念なコード(-1がかえる)
//idx = Array.IndexOf(buf, 9);
//普通のコード
idx = Array.IndexOf(buf, (byte)9);
System.Diagnostics.Debug.WriteLine("発見位置=" + idx);
int int1 = 1;
byte byte1 = 1;
System.Diagnostics.Debug.WriteLine("int1==byte1? ->" + (int1 == byte1));
//int1==byte1? ->Trueと表示される
System.Diagnostics.Debug.WriteLine("byte1.Equals(int1)? ->" + byte1.Equals(int1));
//byte1.Equals(int1)? ->False
}
0 件のコメント:
コメントを投稿