Список документов C# span , которые распространяются на. NET Core 2.1+ и. NET Standard 2.1. В Announcing. NET Standard 2.1 , Span<T>
указан как основной момент релиза. В сторонних статьях также перечислено добавление Span<T>
in. NET Standard 2.1.
Я понял, что эти фрагменты доказательств означают, что можно использовать span таким же образом в целевой библиотеке netstandard2.1 как в целевой библиотеке netcoreapp2.1. Я пробовал это в моей библиотеке с нулевыми зависимостями, где, если кто-то нацелен на netcoreapp2.1, тогда становятся доступными API-интерфейсы библиотеки - например:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.0;netcoreapp2.1;netstandard2.1</TargetFrameworks>
</PropertyGroup>
<!-- snip -->
<PropertyGroup Condition="'$(TargetFramework)'=='netcoreapp2.1' Or '$(TargetFramework)'=='netstandard2.1'">
<LangVersion>7.2</LangVersion>
</PropertyGroup>
</Project>
(netstandard2.0, используемый в сниппете, пример цели, где библиотека не предоставляет Span
совместимых API, поскольку это потребует зависимости System.Memory
)
Но это не так (ошибки с типом или пространством имен Span <> «невозможно найти» при таргетинге на netstandard2.1)
Цель этой библиотеки - иметь нулевые зависимости, поэтому я бы предпочел не зависеть от System.Memory
.
Можно ли использовать Span
в библиотеке Netstandard 2.1 без зависимостей таким же образом, как можно использовать Span
в netcoreapp2.1 без зависимостей?
РЕДАКТИРОВАТЬ: Ответ "да, можно использовать Span<T>
в netstandard 2.1 без зависимостей ". У меня была ошибка на моем конце, где у меня была
#if NETCOREAPP2_1
using System;
#endif
вместо
#if (NETCOREAPP2_1 || NETSTANDARD2_1)
using System;
#endif
Глупая ошибка. Вид wi sh Я мог бы удалить этот вопрос сейчас: D