2016-06-23 9 views
1

Ich habe eine große .net-Lösung, die viele Projekte in ihm hat. Meine Frage ist, wenn ein Projekt von einem anderen verweisen, ist es besser, dies zu tun:vb.net Create vs direktem Bezug mit New

Dim objSomething As Project.Class1 = Nothing 
objSomething = CreateObject("Project.Class1") 
... 

Oder einfach:

Dim objSomething As New Project.Class1() 
... 

Auch gibt es eine Performance-Einbußen auf einem über die andere? Vielen Dank im Voraus

+2

COM Verwenden ein .NET-Objekt zu erstellen, die von einem .NET-Programm nie eine gute Idee ist. –

+0

Dieses Projekt wurde vor langer Zeit (VB6) geschrieben und nach .NET migriert. Ich denke, das ist davon übrig und versuchen zu bestimmen, ob es sich lohnt, all diese "CreateObject()" zu aktualisieren, um eine direkte Referenz zu verwenden. – Losbear

+0

@Losbear Ich würde sie aktualisieren, wenn Sie Code ändern und/oder Leistungsprobleme beheben. Wenn es keinen dringenden Bedarf gibt, ist ein totaler Angriff wahrscheinlich nicht notwendig. Repariere es nicht, wenn es nicht kaputt ist ... (nur meine Meinung) –

Antwort

1

Sie müssen es in beide Richtungen versuchen und es messen, um sicher zu sein, aber es sollte keinen signifikanten Leistungsunterschied geben, wenn Class ein reines COM-Objekt ist.

Ansonsten gibt es keinen Unterschied, da objSomething in beiden Fällen als Project.Class1 getippt wird, alles danach ist früh gebunden. Wenn Project.Class1 ein .NET-Objekt ist, das com-callable ist, sollten Sie IMMER New verwenden, da Sie die COM-Interop-Ebene umgehen, die sich auf die Leistung auswirkt. Es hat keinen Sinn, eine .NET-Klasse über eine COM-Interop-Schicht zu erstellen.

+0

vereinbart - dachte ich, „Create“ hat Overhead und ich dachte, ich habe irgendwo gelesen, es lädt die Bibliothek ähnlich Reflexion (oder es ist Reflektion verwenden?) . Ich werde den Unterschied messen, den es braucht, um einen über den anderen zu laden, aber wollte wissen, ob ich mich zuerst um nichts kümmern muss :) – Losbear

Verwandte Themen