Вот кодовый блок, который я использую в Android Xamarin.
Java.Util.Concurrent.ConcurrentHashMap map = new Java.Util.Concurrent.ConcurrentHashMap();
var key = new byte[] { 1, 2, 3 };
var data = new byte[] { 1, 2, 3, 4, 5 };
map.Put(key, data);
var val = map.Get(key); // null, WHY?
IEnumeration keys = map.Keys();
while (keys.HasMoreElements)
{
var k = keys.NextElement();
var val2 = map.Get(k); // NOT null, val2 is byte array of {1,2,3,4,5}
}
Я ожидал, val
- это байтовый массив (данные), но val
- ноль, а val2
- не ноль.
Но этот Java-код работает очень хорошо.
java.util.concurrent.ConcurrentHashMap map = new java.util.concurrent.ConcurrentHashMap();
byte[] key = {1, 2, 3};
byte[] data = {1, 2, 3, 4, 5};
map.put(key, data);
Object o = map.get(key); // byte array of {1,2,3,4,5}
В чем причина?