Heim >Backend-Entwicklung >C#.Net-Tutorial >Beispielcode für die gemeinsame Nutzung des Schlüsselworts c#ref

Beispielcode für die gemeinsame Nutzung des Schlüsselworts c#ref

黄舟
黄舟Original
2017-03-20 13:28:061352Durchsuche

C#-Sprachreferenz

ref (C#-Referenz) Das Schlüsselwort

ref bewirkt, dass Parameter als Referenz übergeben werden. Der Effekt besteht darin, dass alle an den Parametern in der Methode vorgenommenen Änderungen in der Variablen widergespiegelt werden, wenn die Kontrolle an die aufrufende Methode zurückgegeben wird. Um Ref-Parameter zu verwenden, müssen sowohl die Methodendefinition als auch der Methodenaufruf explizit das Schlüsselwort ref verwenden. Zum Beispiel:

Code kopieren

class RefExample
{
    static void Method(ref int i)
    {
        i = 44;
    }
    static void Main()
    {
        int val = 0;
        Method(ref val);
        // val is now 44
    }
}

Die an den Ref-Parameter übergebenen Parameter müssen zuerst initialisiert werden. Dies unterscheidet sich von out , dessen Parameter vor der Übergabe nicht explizit initialisiert werden müssen. (Siehe out.)

Obwohl ref und out zur Laufzeit unterschiedlich gehandhabt werden, werden sie zur Kompilierungszeit auf die gleiche Weise gehandhabt. Wenn daher eine Methode einen Ref-Parameter und eine andere Methode einen Out-Parameter akzeptiert, können beide Methoden nicht überladen werden. Aus Kompilierungssicht sind beispielsweise die beiden Methoden im folgenden Code genau gleich, sodass der folgende Code nicht kompiliert werden kann:

Code kopieren

class CS0663_Example 
{
    // compiler error CS0663: "cannot define overloaded 
    // methods that differ only on ref and out"
    public void SampleMethod(ref int i) {  }
    public void SampleMethod(out int i) {  }
}

Wenn jedoch eine If Eine Methode nimmt Ref- oder Out-Parameter entgegen, und eine andere Methode akzeptiert diese beiden Parametertypen nicht. Sie kann überladen werden, wie unten gezeigt:

Code kopieren

class RefOutOverloadExample
{
    public void SampleMethod(int i) {  }
    public void SampleMethod(ref int i) {  }
}

Bemerkungen

Eigenschaften sind keine Variablen und können daher nicht als Ref-Parameter übergeben werden.

Informationen zum Übergeben von Arrays finden Sie unter

Arrays mit ref und out übergeben.

Beispiel

Die Übergabe von Werttypen per Referenz (siehe oben) ist nützlich, aber ref ist auch für die Übergabe von Referenztypen nützlich. Dadurch kann die aufgerufene Methode das durch die Referenz referenzierte Objekt ändern, da die Referenz selbst als Referenz übergeben wird. Das folgende Beispiel zeigt, dass das Objekt selbst geändert werden kann, wenn ein Referenztyp als Ref-Parameter übergeben wird.

class RefRefExample
{
    static void Method(ref string s)
    {
        s = "changed";
    }
    static void Main()
    {
        string str = "original";
        Method(ref str);
        // str is now "changed"
    }
}

Das obige ist der detaillierte Inhalt vonBeispielcode für die gemeinsame Nutzung des Schlüsselworts c#ref. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn