Я написал свой собственный класс, который преобразует стандартные примитивы С# в массивы байтов.
Позже я взглянул на BitConverter
класс источник, чтобы узнать, как это сделали профессионалы.
Мой пример кода:
public static byte[] getBytes(short value) {
byte[] bytes = new byte[2];
bytes[0] = (byte)(value >> 8);
bytes[1] = (byte)value;
return bytes;
}
Код класса BitConverter:
public unsafe static byte[] GetBytes(short value)
{
byte[] bytes = new byte[2];
fixed(byte* b = bytes)
*((short*)b) = value;
return bytes;
}
Почему их функции помечены как небезопасные и используют фиксированный оператор?
Являются ли такие функции склонными к ошибкам, даже если они небезопасны? Должен ли я просто отказаться от своей работы и использовать ее реализацию? Что более эффективно?