Ich bin wirklich gestört, da ich using
Blöcke in C # verschachteln muss. Es ist nicht elegant und es braucht viel Platz. In einigen Fällen scheint dies unvermeidbar zu sein, weil ich Variablen mit unterschiedlichen Datentypen deklarieren muss, aber es scheint, als ob der Fall des einfachen Typs vereinfacht werden könnte. Was ich unter "der single-type case" verstehe, ist, wenn mehrere Variablen des gleichen Typs in Serie deklariert werden. Hier ist ein Beispiel von dem, worüber ich rede:
Ich möchte, dass dies so funktioniert, dass a
vor b
erstellt wird und dass b
vor a
liegt. Leider scheint es in der C # -Spezifikation keine Richtung zu geben, wie es tatsächlich passieren sollte. Es sieht so aus, als ob der Microsoft C # -Compiler es so behandelt, da dies die Ausgabe des obigen Programms ist:
Allerdings kann ich nicht garantieren, dass dies ein deterministisches Verhalten ist. Kann jemand die Idee bestätigen oder widerlegen, dass diese Sequenz deterministisch ist? Referenzen wären großartig. Und wenn es bruchanfällig ist (undokumentiert, usw.), ist es wahrscheinlich nicht nützlich, aber das ist gut zu wissen.
Es gibt bereits eine ähnliche Frage zu deterministische Entsorgung , die vom Multiple-Type-Fall handelt, und ich verstehe, dass es dort keine wirkliche Lösung gibt, abgesehen von cleveren Syntaxtricks. Die meisten Antworten dort verpassen den Punkt sowieso. Meine Frage betrifft nur den Einzelfall und ob diese Verfügung deterministisch und verlässlich ist oder nicht. Danke.
Aus der C # -Spezifikation:
"Eine using
Anweisung der Form using (ResourceType r1 = e1, r2 = e2, ..., rN = eN)
entspricht genau einer Folge verschachtelter using
Anweisungen:"
Es scheint also fair zu sagen, dass dies ziemlich in Stein gemeißelt ist.
Tags und Links c# garbage-collection dispose control-structure