パラメーターの引き渡し (C# プログラミング ガイド)Passing Parameters (C# Programming Guide)

C# では、引数を値または参照によってパラメーターに渡すことができます。In C#, arguments can be passed to parameters either by value or by reference. 参照渡しでは、関数メンバー、メソッド、プロパティ、インデクサー、演算子、およびコンストラクターは、パラメーターの値を変更でき、その変更を呼び出し元の環境で永続化できます。Passing by reference enables function members, methods, properties, indexers, operators, and constructors to change the value of the parameters and have that change persist in the calling environment. 値を変更する目的でパラメーターを参照で渡すには、ref または out キーワードを使用します。To pass a parameter by reference with the intent of changing the value, use the ref, or out keyword. 値を変更せずにコピーを回避する目的で参照で渡すには、in 修飾子を使用します。To pass by reference with the intent of avoiding copying but not changing the value, use the in modifier. ここでは、説明を簡単にするために、例に ref キーワードだけを使用しています。For simplicity, only the ref keyword is used in the examples in this topic. inrefout の違いの詳細については、inrefout に関するページを参照してください。For more information about the difference between in, ref, and out, see in, ref, and out.

次の例は、値パラメーターと参照パラメーターの違いを示しています。The following example illustrates the difference between value and reference parameters.

class Program
{
    static void Main(string[] args)
    {
        int arg;

        // Passing by value.
        // The value of arg in Main is not changed.
        arg = 4;
        squareVal(arg);
        Console.WriteLine(arg);
        // Output: 4

        // Passing by reference.
        // The value of arg in Main is changed.
        arg = 4;
        squareRef(ref arg);
        Console.WriteLine(arg);
        // Output: 16 
    }

    static void squareVal(int valParameter)
    {
        valParameter *= valParameter;
    }

    // Passing by reference
    static void squareRef(ref int refParameter)
    {
        refParameter *= refParameter;
    }
}

詳細については、次のトピックを参照してください。For more information, see the following topics:

C# 言語仕様C# Language Specification

詳細については、C# 言語の仕様に関する記事の引数リストを参照してください。For more information, see Argument lists in the C# Language Specification. 言語仕様は、C# の構文と使用法に関する信頼性のある情報源です。The language specification is the definitive source for C# syntax and usage.

関連項目See also