RefAndOut の (1/∞)

C# 言語では、関数の渡すパラメーターを変更するために ref と out の両方が使用されます。本質は、変数パラメーターのアドレスを渡すことです。

次のコードでは、ChangeValue 関数を呼び出しても a の値を変更できません。これは、パラメーター a が関数に渡された後、 a のアドレスを value に直接渡すのではなく、その値がコピーされるためです。したがって、a の値は変わりません。

static void ChangeValue(int value) {
            value = 3;
        }

int a=0;

ChangeValue(a);
            Console.WriteLine(a);//无法改变a的值 

a の値を変更する必要があります。関数パラメータの前に修飾子 ref を追加して、外部変数の値を変更できるようにします。

static void ChangeValueRef(ref int value) {
            value = 3; 
        }

ただし、ref によって変更されたパラメータは外部で初期化する必要があることに注意してください。そうでないとエラーが報告されます。この問題を解決するには、out 修飾子を使用できますが、out によって変更された変数は外部で初期化する必要はありませんが、内部的に割り当てる必要があります。そうでない場合は、エラーが報告されます。

static void ChangeValueOut(out int value)
        {
            value = 3;
        }

Guess you like

Origin blog.csdn.net/qq_52690206/article/details/127032836