Warum müssen wir beim Aufruf einer Methode ein Schlüsselwort verwenden?

8

Wenn eine Methode mit einem out-Parameter definiert wird, muss ich das out-Schlüsselwort beim Aufruf angeben. Es ist bereits dort in der Methodendefinition und die Laufzeit sollte wissen, dass jeder übergebene Parameter ein out-Parameter sein wird.

Es würde Sinn machen, wenn der Compiler das Argument mit oder ohne out-Schlüsselwort mit unterschiedlicher Semantik akzeptiert, aber wenn Sie das Schlüsselwort hinzufügen müssen, um den Code kompilieren zu lassen, was ist das? Sollte der Compiler das nicht automatisch behandeln?

Gleiches gilt für ref

    
Midhat 18.06.2010, 06:42
quelle

5 Antworten

3

Vielleicht weil C # Ihnen erlaubt, Überladungen wie folgt zu schreiben:

%Vor%

In diesem Fall können Compiles nicht verstehen, dass die Methode mit keywork out aufgerufen werden soll, wenn Sie dieses Schlüsselwort beim Aufruf der Methode nicht schreiben. Und generell sollten Sie out schreiben, wenn die Methode mit diesem keyworrd deklariert wird.

Und natürlich, wenn Sie out schreiben, wenn Sie Methode aufrufen, wissen Sie auf jeden Fall, dass diese Variable in der Methode geändert werden kann. Es ist sehr gut lesbar.

MSDN-Artikel

    
Pavel Belousov 18.06.2010, 07:00
quelle
11

Es ist wirklich gut für die Lesbarkeit. Außerdem wird es Ihnen helfen, unerwartetes Verhalten zu vermeiden. Beim Aufruf der Methode mit out param wissen Sie bestimmt, dass der Wert der übergebenen Variable geändert werden kann.

    
Incognito 18.06.2010 06:47
quelle
7

Diese Anforderung ist nicht um des Compilers willen. f (x, out y) informiert sofort denjenigen, der den Code liest, dass y überschrieben wird, nachdem f zurückkehrt, ohne die Definition von f nachschlagen zu müssen, um die mentalen CPU-Zyklen zu speichern.

    
Anton Tykhyy 18.06.2010 06:48
quelle
0

Das ist ein guter Punkt, vielleicht hat es etwas mit Lesbarkeit zu tun. nehmen wir an, wir haben eine Methode mit zwei Parametern, wie zB

%Vor%

ohne den Out-Parameter angeben zu müssen, nur ein einfacher Blick auf jemanden, der diese Methode aufruft, würde sie nicht vervollständigen.

    
Meiscooldude 18.06.2010 06:49
quelle
0

Wenn Sie eine Methode mit out keyword aufrufen, weiß Ihr Aufrufcode sicher, dass er als Referenz übergeben wird. In einigen Fällen können Sie auf eine Methode in einer Bibliothek von Drittanbietern treffen, die zu diesem Zeitpunkt out Schlüsselwort in der Definition hat, wenn Sie diese Methode aufrufen. Sie wissen nicht, ob das Argument als Referenz oder Wert übergeben wird. Sie müssen also in der aufrufenden Methode out für readabilty verwenden.

    
this. __curious_geek 18.06.2010 06:49
quelle

Tags und Links