Wenn Sie zur Laufzeit Steuerelemente zu einem Formular hinzufügen, können Sie einen der folgenden Schritte ausführen:
%Vor%oder
%Vor%Ich hatte angenommen, dass sie gleich sind, und es war nur eine Frage der persönlichen Präferenz, wie man es macht, aber jemand bei der Arbeit erwähnte, dass die zweite Methode schlechter ist, da der Knopf nicht entsorgt wird, wenn das Formular entsorgt wird ( vorausgesetzt, es wurden keine Event-Handler hinzugefügt und werden festgehalten.)
Das hat mir wenig Sinn gemacht, also habe ich online nachgesehen, aber ich konnte nichts finden, was ich sagen könnte.
Weiß jemand die Antwort oder kann er mich in die richtige Richtung weisen?
Da Spekulation eine Zeitverschwendung ist, habe ich mir meine Kopie von
Basierend auf diesem Code sind die Methoden äquivalent und dies ist ausschließlich eine Frage der Präferenz.
Ich kann sehen, wo die Schaltfläche Entsorgung ein Problem sein könnte, wenn Sie eine Anwendung schreiben, die während ihrer Dauer viele Formulare öffnet und schließt. Sie müssen sicherstellen, dass Sie über einen geeigneten Entsorgungscode verfügen, um sicherzustellen, dass die Anwendung nicht zu viel Speicher beansprucht.
Abgesehen davon mag ich die erste Aussage, weil sie klarer erklärt, was Ihr Code macht. Sie erstellen eine neue Schaltfläche und fügen sie den vorhandenen Steuerelementen auf der Seite hinzu. Sie können direkt nach dem Debuggen / Refactoring lesen und verstehen, was vor sich geht. In der zweiten Code-Gruppe ist dies etwas vager. Wenn Sie die erste Schaltflächendeklaration überstrichen haben und die btn.Parent = diese Anweisung gesehen haben, könnten Sie glauben, dass Sie die Schaltfläche einem neuen Formular oder etwas in diesem Sinne zugewiesen haben.
Es hört sich etwas pingelig an, aber in letzter Zeit habe ich einigen Kollegen geholfen, indem ich ihnen meinen Code gezeigt habe, und ich werde feststellen, dass es auf jeden Fall mehr als einen Weg gibt, eine Katze zu häuten Es gibt eine gewisse Art, es zu enthäuten, was sich viel besser erklärt, wenn man die Dinge in der Zukunft betrachtet.
Ich habe es immer vorgezogen, die Steuerelemente des Objekts zu identifizieren, denen ich das neue Steuerelement hinzufügen werde ...
%Vor%Ich fühle, dass dies leichter zu lesen ist und Sie müssen keine Stammbaumanalyse durchführen, um herauszufinden, wer der Elternteil ist ...
Ich glaube, dass die Verwendung der .Parent-Code intern die .Controls.Add, so sollten sie das gleiche Endergebnis haben, aber für mich kommt es auf die Lesbarkeit des Codes.
Es gibt eine ähnliche Frage hier auf StackOverflow .
Im zweiten Fall wird das Steuerelement möglicherweise nicht entsorgt, wenn das Formular ausgeführt wird (ich bin mir nicht sicher, ob es das tut oder nicht), aber es sollte trotzdem durch die nächste Garbage Collection freigegeben werden, da dies nicht passieren sollte seien Sie nach der Verfügung des Formulars hart darauf verwiesen. Das Ergebnis ist, ob die Schaltfläche mit dem Formular entsorgt wird, ist für die meisten Anwendungen kein Problem. In der überwiegenden Mehrzahl der Apps, die Formulare verwenden, ist der Benutzer der Flaschenhals. Ob Sie also auf einen oder zwei Durchläufe des Garbage Collector warten müssen, bevor eine Sammlung von Formularsteuerelementen entfernt wird, sollte sich nicht auf Ihre Designentscheidung auswirken.
>Nachdem ich gesagt habe, bevorzuge ich
%Vor%weil es für das, was Sie tatsächlich tun, semantisch angemessener ist. Ich verwende diese Methode immer, anstatt die Eigenschaft Control.Parent festzulegen.
Es ist wirklich eine Frage des Geschmacks. Was passiert, wenn Sie die Eigenschaft Parent
auf eine Control
setzen? Dieser Code stammt von .NET Reflector.
Ich persönlich mag
%Vor%Weil es expliziter und lesbarer Code ist.