Benutzer mit den meisten Antworten
switch mit Objekten

Frage
-
Hallo,
ich will mit switch prüfen, von welchem Typ das Objekt ist (mit if funktioniert es). Es wird ein konstanter Wert gefordet.
Warum ist item kein konstanter Wert und was muss ich ändern, um switch verwenden zu können?
foreach (object item in this.Items)
{
switch (true)
{
case (item is TextBox):
break;
}
}
Alexander
Antworten
-
Hallo Alexander,
switch ist nicht für solche Fälle designed, sondern explizit für Auswahlmöglichkeiten und Enumerationen - eben nicht für wahlfreie Bedingungen. in denen man eben if / else nimmt.
Sind nur "bestimmte" Typen möglich, könnte ggf. etwas wie folgendes benutzt werden:string s = "test"; var item = Type.GetTypeCode(s.GetType()); switch (item) { case TypeCode.Int32: MessageBox.Show("ist ein " + item); break; case TypeCode.String: MessageBox.Show("ist ein " + item); break; }
ciao Frank- Als Antwort vorgeschlagen Robert BreitenhoferModerator Freitag, 1. Oktober 2010 07:36
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 6. Oktober 2010 12:37
-
Hallo AlexanderRI,
Schau Dir mal die folgenden Diskussionsfaden an. Vielleicht findest Du etwas dass Dir weiter helfen kann.
How do I use an object's type as the test condition in a switch statement?
http://msdn.microsoft.com/en-us/library/6weteh5e(VS.80).aspx
Grüße,
Robert
- Als Antwort vorgeschlagen Marcel RomaModerator Freitag, 1. Oktober 2010 08:07
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 6. Oktober 2010 12:37
Alle Antworten
-
Hallo Alexander,
switch ist nicht für solche Fälle designed, sondern explizit für Auswahlmöglichkeiten und Enumerationen - eben nicht für wahlfreie Bedingungen. in denen man eben if / else nimmt.
Sind nur "bestimmte" Typen möglich, könnte ggf. etwas wie folgendes benutzt werden:string s = "test"; var item = Type.GetTypeCode(s.GetType()); switch (item) { case TypeCode.Int32: MessageBox.Show("ist ein " + item); break; case TypeCode.String: MessageBox.Show("ist ein " + item); break; }
ciao Frank- Als Antwort vorgeschlagen Robert BreitenhoferModerator Freitag, 1. Oktober 2010 07:36
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 6. Oktober 2010 12:37
-
Hallo AlexanderRI,
Schau Dir mal die folgenden Diskussionsfaden an. Vielleicht findest Du etwas dass Dir weiter helfen kann.
How do I use an object's type as the test condition in a switch statement?
http://msdn.microsoft.com/en-us/library/6weteh5e(VS.80).aspx
Grüße,
Robert
- Als Antwort vorgeschlagen Marcel RomaModerator Freitag, 1. Oktober 2010 08:07
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 6. Oktober 2010 12:37