Заменить аргументы на Span
в методах?
Должен ли я заменить все параметры моего массива (например, byte[]
, char[]
и string[]
) в моих синхронных методах на Span
(такие как Span<byte>
, Span<char>
и Span<string>
)?
Пример:
public void Foo(byte[] bytes)
С:
public void Foo(Span<byte> bytes)
Заменить аргументы наMemory
в асинхронных методах?
Должен ли я заменить все параметры моего массива (например, byte[]
, char[]
и string[]
) в моих асинхронных методах на Memory
(например, Memory<byte>
, Memory<char>
и Memory<string>
)?
Пример:
public async Task FooAsync(byte[] bytes)
С:
public async Task FooAsync(Memory<byte> bytes)
Заменить тип возврата на Span
inметоды?
Должен ли я заменить все мои типы массивов (например, byte[]
, char[]
и string[]
) в моих методах на Span
(например, Span<byte>
, Span<char>
,и Span<string>
)?
Пример:
public byte[] Foo()
С:
public Span<byte> Foo()
Хмм ...
- Являются ли массивы в качестве аргументов метода нежелательными?Является ли
Span
предпочтительным? - Являются ли массивы возвращаемыми типами нежелательными?
Span
одобрено?
Я прочитал пару статей о Span
, ReadOnlySpan
и Memory
, но мне все это трудно понять для моего маленького маленького разума.Есть ли какое-нибудь эмпирическое правило или дурацкий гид по Span?