Abrufen der Größe des Typs, der durch die Variable vom Typ „Typ“ beschrieben wird [Duplikat]
Posted: 08 Jan 2025, 08:49
Das ist wahrscheinlich eine dumme Frage, aber ich konnte die Antwort auch auf dieser Seite nicht finden (habe dies gefunden, aber es ist nicht genau das, da die empfohlene Lösung darin besteht, Marshal.SizeOf zu verwenden, was meines Wissens nach funktioniert mit nicht verwaltetem Speicher) oder hier.
Angenommen, ich habe eine Variable vom Typ type, also so etwas wie
wobei ich zum Zeitpunkt der Kompilierung den genauen Wert der Variablen nicht kenne (in meiner tatsächlichen Implementierung wird es einer von wenigen (6, um genau zu sein) Werten sein).
Gibt es eine Möglichkeit, die Größe des Typs zu ermitteln, der durch someType beschrieben wird? Da ich derzeit nur 6 mögliche Werte von sometype habe, habe ich das Problem gelöst, indem ich Folgendes geschrieben habe:
was hässlich aussieht und etwas umständlich ist, da ich eine zusätzliche Zeile schreiben müsste, wenn ich Unterstützung für einen neuen Typ hinzufüge. Gibt es irgendeine Möglichkeit, die Hässlichkeit zu umgehen?
BEARBEITEN:
Diese Antwort wurde als Duplikat von< geschlossen /p>
Ich bin mit der Entscheidung nicht einverstanden, oder genauer gesagt, ich verstehe nicht, warum es sich bei den beiden Fragen um Duplikate handelt. Hier ist mein Verständnis:
Ich stimme jetzt zu, dass die Antwort a ist Duplikat, in gewissem Sinne war die verlinkte Antwort tatsächlich die Frage, was ich hier geschrieben habe eins, aber der ursprüngliche Wortlaut war etwas abwegig.
Angenommen, ich habe eine Variable vom Typ type, also so etwas wie
Code: Select all
Type someType = typeof(double);
Gibt es eine Möglichkeit, die Größe des Typs zu ermitteln, der durch someType beschrieben wird? Da ich derzeit nur 6 mögliche Werte von sometype habe, habe ich das Problem gelöst, indem ich Folgendes geschrieben habe:
Code: Select all
int getTypeSize(Type in)
{
if (in == typeof(double))
{
return sizeof(double);
}
if (in == typeof(short))
{
return sizeof(short);
}
if (in == typeof(int))
{
return sizeof(int);
}
}
BEARBEITEN:
Diese Antwort wurde als Duplikat von< geschlossen /p>
Ich bin mit der Entscheidung nicht einverstanden, oder genauer gesagt, ich verstehe nicht, warum es sich bei den beiden Fragen um Duplikate handelt. Hier ist mein Verständnis:
- In der verknüpften Frage hat das OP eine Variable x vom Typ int und möchte die erhalten Größe von x, die gleich sizeof(int) ist, unabhängig vom Wert von x.
- In meiner Frage habe ich eine Variable x vom Typ Type und der Wert, den ich berechnen möchte, ist davon abhängig der Wert von x. Wenn zum Beispiel x==typeof(double), dann möchte ich, dass meine Funktion sizeof(double) zurückgibt, während ich möchte, dass dies bei x==typeof(float) der Fall ist return sizeof(float).
Ich stimme jetzt zu, dass die Antwort a ist Duplikat, in gewissem Sinne war die verlinkte Antwort tatsächlich die Frage, was ich hier geschrieben habe eins, aber der ursprüngliche Wortlaut war etwas abwegig.