Einzelnen Beitrag anzeigen

Robert_G
(Gast)

n/a Beiträge
 
#4

Re: Case-Anweisung für Strings?

  Alt 18. Jul 2005, 23:41
Welchen Sinn macht diese Einschränkung denn unter .Net? Es gibt doch kein endgültiges Kompilat mehr...
Kleines Beispiel:
Delphi-Quellcode:
type
  Cases = (First, Second, Third);

  SomeClass = class
  public
    procedure DoSomething(someValue : Cases);
  end;

implementation

procedure SomeClass.DoSomething(someValue : Cases);
var
 Dings :string;
begin
  case someValue of
    Cases.First : Dings := 'A';
    Cases.Second : Dings := 'B';
    Cases.Third : Dings := 'C';
  end;
  Console.WriteLine(Dings);
end;
Man könnte jetzt erwarten, dass hier wegen der Pflicht ordinaler Typen irgendwelche coolen Optimierungen laufen...
Pah! Das wird eigentlich erzeugt:
Delphi-Quellcode:
procedure SomeClass.DoSomething(someValue: Cases);
var
  text1: string;
begin
  if (someValue <> Cases.First) then
    if (someValue = Cases.Second) then
      text1 := 'B'
    else if (someValue = Cases.Third) then
      text1 := 'C'
    else
      text1 := 'A';

  Console.WriteLine(text1)
end;
Sorry, aber wo ist hier der Grund für diese Einschränkung? IMHO hat Abwärtskompatibilität seine Grenzen...
case of ist nett um Verschachtelungen zu vermeiden und die TString-Vorschlaghammer methode ist einfach nicht akzeptierbar...
  Mit Zitat antworten Zitat