2014-02-14 6 views

ответ

5

Вы создаете два массива байтов. Эти два массива имеют разные адреса памяти и сравнивают разные адреса. False

bool result = (new byte[0] == new byte[0]); 
Console.WriteLine(result); 

...... 
IL_0001: ldc.i4.0     // zero int for size in the evaluation stack 
IL_0002: newarr  System.Byte  // create an array of zero bytes 
IL_0007: ldc.i4.0     // zero int for size in the evaluation stack 
IL_0008: newarr  System.Byte  // create another array of zero bytes 
IL_000D: ceq       // compare the address of the two arrays 
IL_000F: stloc.0  // result 
IL_0010: ldloc.0  // result 
IL_0011: call  System.Console.WriteLine 
0

Массивы являются ссылочными типами. Каждый экземпляр имеет свою собственную ссылку, что означает, что они не будут равны.

2

Вы создаете два новых массива и сравниваете ссылки. Когда я говорю ссылку, я имею в виду место в памяти, где каждый живет. Поскольку они не то же самое, они всегда будут терпеть неудачу.

Это верно, если вы это сделали;

byte[] a = new byte[0]; 
    byte[] b = a; 
    return a == b; 
Смежные вопросы