Сообщение Re[42]: MS забило на дотнет. Питону - да, сишарпу - нет? от 03.09.2021 15:26
Изменено 03.09.2021 15:33 Serginio1
Re[42]: MS забило на дотнет. Питону - да, сишарпу - нет?
Здравствуйте, vdimas, Вы писали:
V>Случаев сразу несколько.
V>Раньше был доступен stackalloc только под примитивные blit-типы.
V>Например, делаешь byte * b = stackallock byte[N], затем приводишь к указателю на структуру.
На самом деле есть public fixed byte
https://stackoverflow.com/questions/13001327/id-like-to-use-union-as-c-sharp-with-byte-array
А из него можно уже десериализовать сериализовать объекты
ну и юнионы тоже
V>Случаев сразу несколько.
V>Раньше был доступен stackalloc только под примитивные blit-типы.
V>Например, делаешь byte * b = stackallock byte[N], затем приводишь к указателю на структуру.
На самом деле есть public fixed byte
https://stackoverflow.com/questions/13001327/id-like-to-use-union-as-c-sharp-with-byte-array
А из него можно уже десериализовать сериализовать объекты
ну и юнионы тоже
[StructLayout(LayoutKind.Explicit, Size = 12)]
public unsafe struct UnionPacket
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
[FieldOffset(0)]
public fixed byte data[12];
[FieldOffset(0)]
public float Time;
[FieldOffset(4)]
public Int16 CoordX;
[FieldOffset(6)]
public Int16 CoordY;
[FieldOffset(8)]
public byte Red;
[FieldOffset(9)]
public byte Green;
[FieldOffset(10)]
public byte Blue;
[FieldOffset(11)]
public byte Alpha;
}
Re[42]: MS забило на дотнет. Питону - да, сишарпу - нет?
Здравствуйте, vdimas, Вы писали:
V>Случаев сразу несколько.
V>Раньше был доступен stackalloc только под примитивные blit-типы.
V>Например, делаешь byte * b = stackallock byte[N], затем приводишь к указателю на структуру.
На самом деле есть public fixed byte
https://stackoverflow.com/questions/13001327/id-like-to-use-union-as-c-sharp-with-byte-array
А из него можно уже десериализовать сериализовать объекты
ну и юнионы тоже
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/unsafe-code
V>Случаев сразу несколько.
V>Раньше был доступен stackalloc только под примитивные blit-типы.
V>Например, делаешь byte * b = stackallock byte[N], затем приводишь к указателю на структуру.
На самом деле есть public fixed byte
https://stackoverflow.com/questions/13001327/id-like-to-use-union-as-c-sharp-with-byte-array
А из него можно уже десериализовать сериализовать объекты
ну и юнионы тоже
[StructLayout(LayoutKind.Explicit, Size = 12)]
public unsafe struct UnionPacket
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
[FieldOffset(0)]
public fixed byte data[12];
[FieldOffset(0)]
public float Time;
[FieldOffset(4)]
public Int16 CoordX;
[FieldOffset(6)]
public Int16 CoordY;
[FieldOffset(8)]
public byte Red;
[FieldOffset(9)]
public byte Green;
[FieldOffset(10)]
public byte Blue;
[FieldOffset(11)]
public byte Alpha;
}
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/unsafe-code