Могу ли я получить указатель на Span?

Из Microsoft TechNet :

Несколько специальных имен файлов зарезервированы системой и не могут использоваться для файлов или папок:

CON , AUX, COM1, COM2, COM3, COM4, ​​LPT1, LPT2, LPT3, PRN, NUL

blockquote>

2
задан Ray Koopa 18 January 2019 в 16:06
поделиться

2 ответа

Если у вас C # 7.3 или новее, вы можете использовать расширение, сделанное для оператора fixed, которое может использовать любой подходящий метод GetPinnableReference для типа (который есть у Span и ReadOnlySpan):

fixed (byte* bp = bytes) {
    ...
}

Поскольку мы имеем дело с указателями, это, конечно, требует unsafe контекста.

C # 7.0 до 7.2 не имеют этого, но допускают следующее:

fixed (byte* bp = &bytes.GetPinnableReference()) {
    ...
}
0
ответ дан Jeroen Mostert 18 January 2019 в 16:06
поделиться

Попробуйте это:

Span<byte> bytes = ...;
string s = Encoding.UTF8.GetString((byte*)Unsafe.AsPointer(ref bytes.GetPinnableReference()),
    bytes.Length);
0
ответ дан mm8 18 January 2019 в 16:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: