Abrufen der Größe des Typs, der durch die Variable vom Typ „Typ“ beschrieben wird [Duplikat]C#

Ein Treffpunkt für C#-Programmierer
Guest
 Abrufen der Größe des Typs, der durch die Variable vom Typ „Typ“ beschrieben wird [Duplikat]

Post by Guest »

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

Code: Select all

Type someType = typeof(double);
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:

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);
}
}
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:
  • 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).
ZWEITE BEARBEITUNG:
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.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post