Unterschied zwischen Delegieren.Invoke und Delegate()
delegate void DelegateTest();
DelegateTest delTest;
Was ist der Unterschied zwischen dem Aufruf delTest.Invoke()
und delTest()
? Beide führen die Delegierten auf den aktuellen thread, richtig?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
delTest()
form ist ein compiler Helfer, darunter ist es wirklich ein Aufruf anInvoke()
.obbject[]
und die Rückkehrobject
.Richard s Antwort ist korrekt, jedoch beginnend mit C# 6.0 gibt es eine situation, wo die Verwendung
Invoke()
direkt könnte von Vorteil sein, weil die null-conditional operator. Pro MS-docs-Richtig. Beide haben genau das gleiche Ergebnis.
Gegeben, dass Sie haben richtig initialisiert
delTest
natürlich.delTest
istnull
beide Schreibweisen wieder zum gleichen Ergebnis führen (das ist in dieser situation einNullReferenceException
geworfen von der Linie, wo der Aufruf versucht wird).