Span и Memory как замена массивов в сигнатурах методов? - PullRequest
0 голосов
/ 25 октября 2018

Заменить аргументы на 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...