Verwendung von ref und out in C#

Ref und out sind Schlüsselwörter, die für die Parameterübergabe in C# verwendet werden. Beide ermöglichen die Änderung des Werts von Parametern innerhalb einer Methode. Die Unterschiede sind wie folgt:

1. Ref-Schlüsselwort: Parameter, die mit dem Ref-Schlüsselwort deklariert werden, müssen vor dem Aufruf der Methode initialisiert werden und können als mit einem Anfangswert zugewiesen betrachtet werden. Änderungen am ref-Parameter innerhalb der Methode wirken sich auf die tatsächlichen Parameter aus, die außerhalb der Methode übergeben werden. Mit anderen Worten: Wenn ich den lokalen Wert innerhalb der Methode ändere, wird auch der Wert der globalen Variablen geändert.

public class test : MonoBehaviour
{
    [SerializeField] int a;
    // Start is called before the first frame update
    void Start()
    {
        XiuGai(ref a);
    }

    // Update is called once per frame
    void XiuGai(ref int b)
    {
        b = 100;
    }
}

2. Schlüsselwort out: Parameter, die mit dem Schlüsselwort out deklariert werden, müssen nicht innerhalb der Methode initialisiert werden und können so betrachtet werden, als ob ihnen kein Anfangswert zugewiesen wurde. Dem Out-Parameter muss innerhalb der Methode ein Wert zugewiesen werden, sonst kommt es zu einem Kompilierungsfehler. Im Gegensatz zum Schlüsselwort ref kann der Parameter out seinen Wert innerhalb der Methode bestimmen, was bedeutet, dass der lokalen Variablen innerhalb der Methode ein Wert zugewiesen werden muss.

public class test : MonoBehaviour
{
    [SerializeField] int a;
    // Start is called before the first frame update
    void Start()
    {
        XiuGai(out a);
    }

    void XiuGai2(out int b)
    {
        b = 50;
    }
}

  

3. Zusammenfassung: Der von ref übergebene Wert muss innerhalb der Methode nicht geändert werden, der von out übergebene Wert muss jedoch geändert werden.

4. Dies kann im Task-Manager oder für Parameter verwendet werden, die in Echtzeit aktualisiert werden müssen. Es ist immer noch sehr nützlich.

Guess you like

Origin blog.csdn.net/k253316/article/details/131800602