Обратите внимание, что это поведение по умолчанию (ANSI).
Если вы:
SET ANSI_NULLS OFF
http://msdn.microsoft.com/en- us / library / ms188048.aspx
Вы получите разные результаты.
SET ANSI_NULLS OFF
, по-видимому, уйдет в будущем ...
Вы можете сделать его более прозрачным, используя буфер фиксированного размера:
[StructLayout(LayoutKind.Sequential)]
public unsafe struct Result
{
public byte success;
public ErrorCode error_code;
public fixed sbyte error_path[1025];
}
Обратите внимание, что я использовал sbyte
для типа элемента массива. Это 8-битный тип, который соответствует неуправляемому типу char
, который также является 8-битным типом. Вы использовали char
в своем C #, который является 16-битным типом.
Возможно, вам потребуется преобразовать буфер фиксированного размера в строку, но как именно это сделать, зависит от используемой вами кодировки. Тем не менее, существует множество статей на эту тему (преобразование буфера фиксированного размера в строку), которые можно найти с помощью веб-поиска.