Универсальный тип C#, не допускающий значения NULL, с собственными коллекциями UnityC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Универсальный тип C#, не допускающий значения NULL, с собственными коллекциями Unity

Сообщение Anonymous »

Я пытаюсь сохранить собственную хэш-карту Unity в двоичном виде, но у меня возникли проблемы с общим синтаксисом.

Код: Выделить всё

        public class Hashmap where TKey : struct where TValue : struct
{
unsafe public NativeParallelHashMap Load(string folder, string file)
{
// load our nodes from map binary data file and return
Function.HashmapAdapter adapter = new();
BinarySerializationParameters prams = new() { UserDefinedAdapters = new() { adapter } };
byte[] data = File.ReadAllBytes(folder + file);
fixed (void* buffer = data)
{
var reader = new UnsafeAppendBuffer.Reader(buffer, data.Length);
return BinarySerialization.FromBinary(&reader, prams);
}
}
}
Вот какая ошибка.

Код: Выделить всё

The type 'TValue' must be a non-nullable value type, along with all fields at any level of nesting, in order to use it as parameter 'TValue' in the generic type or method 'HashmapAdapter'
Struct не является типом значения, допускающим значение NULL, поэтому я подумал, что если я поставлю его в качестве общего ограничения, оно будет работать?
EDIT: я переключил TValue : struct to TValue : unmanaged, и это исправило часть TValue, но TKey по-прежнему выдает ошибку.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ollections
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»