CSHARP_GEPARD Telegram 83
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-коллекций и работать с ними, когда вам нужны ссылки на элементы.
🔥25😁7👀2👍1



tgoop.com/csharp_gepard/83
Create:
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

View MORE
Open in Telegram


Telegram News

Date: |

Concise Clear Ng, who had pleaded not guilty to all charges, had been detained for more than 20 months. His channel was said to have contained around 120 messages and photos that incited others to vandalise pro-government shops and commit criminal damage targeting police stations. A Telegram channel is used for various purposes, from sharing helpful content to implementing a business strategy. In addition, you can use your channel to build and improve your company image, boost your sales, make profits, enhance customer loyalty, and more. It’s yet another bloodbath on Satoshi Street. As of press time, Bitcoin (BTC) and the broader cryptocurrency market have corrected another 10 percent amid a massive sell-off. Ethereum (EHT) is down a staggering 15 percent moving close to $1,000, down more than 42 percent on the weekly chart.
from us


Telegram C# Heppard
FROM American