| 

.NET C# Java Javascript Exception

6
Warum geht das nicht:
Type type = item.GetType();
switch (type)
{
}


Da gibt es einen Fehlermeldung, dass man nur bool, string verwenden darf. Warum?
News:
13.04.2011
Konoola 61 3
4 Antworten
4
Schau dir bitte dazu folgenden Beitrag an. Dort wird erklärt, warum das nicht geht.
13.04.2011
Konstantin 3,7k 8
Sehr interessant und einleuchtend.
hugoZ 13.04.2011
2
Ergänzend zu der Antwort von Konstantin möchte ich auf einen Beitrag hinweisen der den "TypeSwitch" vorstellt den ich selbst in meinen Projekten nutze. Hiermit kannst Du eine Art SwitchCase direkt auf einen Typen durchführen:

TypeSwitch.Do(data,
TypeSwitch.Case(Of DateTime)(Sub(x) ok = x.IsBetween(.Parameter("Min"), .Parameter("Max"))),
TypeSwitch.Case(Of Integer)(Sub(x) ok = x.IsBetween(.Parameter("Min"), .Parameter("Max"))),
TypeSwitch.Default(Sub() Throw New ArgumentException("Typ wird nicht unterstützt")))


Ich find es viel eleganter als Meterlange "IF ELSE" Konstrukte. Den Kompletten SourceCode und weitere Erklärungen findest du hier.
13.04.2011
Thomas Sczyrba 1,4k 1 2 9
2
Übrigens: Zum Verständis sehr gut geeignet ist auch eine Diskusion auf StackOverflow...
13.04.2011
Thomas Sczyrba 1,4k 1 2 9
+1 Guter Link! Aber nicht nach der ersten Antwort aufhören zu lesen. Ich finde auch die Beiträge sehr wichtig, die darauf drängen, den switch in einem solchen Fall komplett zu vermeiden und stattdessen mit Methoden-Überladung, Basisklasse mit abstrakter Methode oder Visitor-Pattern zu arbeiten.
Matthias Hlawatsch 13.04.2011
Ich bin ein wenig leidgeplagt, weil ich ein System mit viel switch-case Refaktorieren musste. Teilweise musste ich switch-case-Anweisungen Klassenübergreifen synchron halten, damit die Anwendung ihre Aufgabe erfüllt. Das war zunehmend schwierig, weil die switch-case-Blöcke nicht miteinander "reden". Wer verspürt, mehr als nur ein einfache if-then-else zu verwenden, der sollte sich nochmal zurücklehnen und bitte bitte sein Klassen-Design überdenken. Nachfolgende Entwickler werden es einem danken.
oopexpert 30.05.2011
-1
Kommentar entfernt
30.05.2011
oopexpert 455 1 8

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH