Was ich meine ist, sagen, ich habe ein struct
einige Daten zu repräsentieren, und es sieht wie folgt aus:Wenn ich drei separate Werte habe, die alle in 32 Bits passen könnten, macht es Sinn, sie zu speichern?
struct LilStruct
{
public readonly short A;
public readonly byte B;
public readonly byte C;
public LilStruct(short a, byte b, byte c)
{
A = a;
B = b;
C = c;
}
}
A short
und zwei byte
Werte alle in 32 Bits passen könnte. Was ich frage mich, ist (für Zwecke der Ausrichtung, Leistung, was auch immer), wenn es würde tatsächlich Sinn machen, diese Daten in folgendem Format zu speichern, statt:
struct LilStruct
{
private readonly uint _value;
public LilStruct(short a, byte b, byte c)
{
_value = ((uint)a << 16) | ((uint)b << 8) | (uint)c;
}
public int A
{
get { return (int)(_value >> 16); }
}
public int B
{
get { return (int)(_value >> 8) & 0x000000FF; }
}
public int C
{
get { return (int)(_value & 0x000000FF); }
}
}
Ist das sinnlos? Was wären die Vorteile/Nachteile?
unabhängig von der Antwort, ich denke, es ist großartig, das wurde angesprochen. Ich persönlich finde es gut, pragmatisch zu sein. – DevSolo