2009-05-14 4 views

Antwort

4

Wenn Sie Object verwenden, müssen Clients etwas übergeben, das IUnknown oder IDispatch unterstützt - kurz gesagt, der Parameter muss ein Objekt sein. Wenn Sie Variant verwenden, können Clients alles übergeben.

+1

Um das hinzuzufügen: Wenn Sie Variant wählen, müssen Sie auch über die Möglichkeit, dass der Parameter 0, Null, Empty, VbNullString oder Nothing sein kann ;-) –

+0

@Mike Spross: guter Kommentar. Als Pedantaholiker muss ich beachten, dass Klienten, wenn sie es zu einem Objekt machen, auch nichts weiterreichen können. – MarkJ

+0

@MarkJ: Sehr wahr. Ich versuchte eher zu vermitteln, dass Variant viel mehr Vielfalt hat, wenn es darum geht, ob etwas existiert oder nicht, während Object nur eine Möglichkeit definiert, die Nichtexistenz von etwas auszudrücken. Insbesondere die Tatsache, dass ein nicht zugewiesener Variant standardmäßig auf "Leer" gesetzt ist, kann Chaos bei Code ruinieren, der IsNull auf Parameter überprüft, aber vergisst, IsEmpty-Checks durchzuführen. Wir haben einige Klassen, die nur die Eigenschaften von Variant verwenden, so dass der Aufrufer Null übergeben kann, aber sie wurden nicht für die Suche nach Empty codiert, was seltsame Dinge verursachte, wenn der Aufrufer die Eigenschaften nicht explizit nullte. –

Verwandte Themen