tgoop.com/csharp_gepard/83
Create:
Last Update:
Last Update:
CollectionsMarshal #память
Ваши коллеги любят List<T>
, а вы желаете окунуться в мир Span<T>
? Выход есть!
List<int> list = [1, 2, 3, 4, 5];
var span = CollectionsMarshal.AsSpan(list);
Ваши коллеги любят
Dictionary<TKey, TValue>
, а вы, в тайне от них, мечтаете пощупать механику работы с ref
? Выход есть снова!
var dic = new Dictionary<int, int>
{
{ 1, 1 },
{ 2, 2 }
};
ref var value = ref CollectionsMarshal.GetValueRefOrNullRef(dic, 2);
if (!Unsafe.IsNullRef(ref value)) value = 2222;
Console.WriteLine(dic[2]);
Вам надоело передавать структуры через Nullable<T> и вы мечтаете быть модным и шелковистым? Опять выход рядом! Обратите внимание на конструкцию
Unsafe.IsNullRef(ref value)
из предыдущего кода. Если в словарик передать не существующий ключ, то он сделает return ref Unsafe.NullRef<T>()
. Этот результат очень удобно проверять на null.Короче говоря, если кто не знал, есть такой интересный класс CollectionsMarshal. Иногда помогает делать странное. Например, достучаться до внутренних массивов BCL-коллекций и работать с ними, когда вам нужны ссылки на элементы.
BY C# Heppard

Share with your friend now:
tgoop.com/csharp_gepard/83