Der Kontext dieser Frage ist, dass ich versuche, Leistungsprobleme zu debuggen (abgesehen von den offensichtlichen, die ich bereits kenne und finden kann).Was geschieht, wenn Sie auf eine freigegebene Funktion von einer Instanz eines Objekts zugreifen
Ich erbte eine Code-Basis (VB.NET) für eine ASP.NET-App. Dies ist eine App, die in .NET 1.1 Tagen entwickelt wurde und war die erste .NET-Anwendung für viele Entwickler, die daran gearbeitet haben.
In dieser Codebasis befindet sich eine Klasse namens DatabaseUtility, die mehrere freigegebene öffentliche Methoden sowie nicht freigegebene öffentliche Funktionen und Subs für CRUD-Vorgänge für die Datenbank (SQL Server) enthält.
In meiner "BL" ist es üblich, dass eine Methode eine Instanz der DatabaseUtility erstellt, die im Wesentlichen herausfindet, was die Verbindungszeichenfolge sein soll und eine Verbindung öffnet, sowie dem Entwickler einen Griff zu den anderen Methoden gibt es.
Dim utility as New DatabaseUtility()
Sobald ich, dass ich anfangen Parameter zu erstellen, die ich auf eine der Methoden in DatabaseUtility passieren werde (wie GetDataSet). In meiner DatabaseUtility gibt es eine Shared-Methode namens CreateParameter, die im Wesentlichen das tut. Es erstellt ein SqlParameter-Objekt, sodass ich es einer Parameters-Auflistung hinzufügen kann.
Nun wird der Code-Basis mit viel dies ist übersät:
utility.CreateParameter(...)
Da jedoch Create eine gemeinsame Methode ist, bin ich nicht sicher, was hinter den Kulissen vor sich geht. Ich weiß, weil es ein Gemeinschafts-Mitglied ist, dass eine Instanz der DatabaseUtility nicht erstellt, wenn ich es so nennen:
DatabaseUtility.CreateParameter(...)
jedoch, weil ich es von einer Instanz (Utility) nenne, dass das Verhalten nicht ändert überhaupt?
Die beiden Anrufe sind identisch. –
Ich habe Ihre Frage wie gefragt beantwortet, aber könnten Sie näher erläutern, worum es bei Ihnen genau ging - z. Was deutet darauf hin, dass zwischen den beiden Anrufen ein Unterschied bestand? –
Der Zugriff auf ein freigegebenes Mitglied über eine Instanzvariable kann Ihren Code schwerer verständlich machen, indem die Tatsache, dass das Mitglied freigegeben ist, verschleiert wird. Wenn ein solcher Zugriff Teil eines Ausdrucks ist, der andere Aktionen ausführt, z. B. eine Function-Prozedur, die eine Instanz des freigegebenen Members zurückgibt, übergeht Visual Basic den Ausdruck und alle anderen Aktionen, die andernfalls ausgeführt werden. http://msdn.microsoft.com/en-us/library/y6t76186%28VS.80%29.aspx –