C#でref修飾子を利用して変数を直接更新する方法

この資料では、C#のref修飾子を使って、呼び出し元の変数を直接変更する方法を、シンプルな例で解説します。


1. 目的

ref修飾子を利用すると、メソッドに渡した変数自体を参照渡しし、メソッド内で変更した内容を呼び出し元に反映させることができます。ここでは、渡された整数の2倍の値に更新するメソッドを例に、基本的な使い方を学びます。


2. サンプルコード

以下は、整数の2倍の値に更新するサンプルコードです。
※ この例では、ref修飾子を使って、メソッド内で直接呼び出し元の変数を更新しています。

using System;

class Program
{
    static void Main()
    {
        // refパラメータでは、変数は呼び出し前に初期化する必要がある
        int value = 10;

        // 10の2倍の値に更新する
        DoubleValue(ref value);

        Console.WriteLine("10の2倍の値は: " + value);
    }

    // 引数valueの2倍の値を計算し、refパラメータを使って元の変数を更新するメソッド
    static void DoubleValue(ref int value)
    {
        value = value * 2;
    }
}

3. コードの解説

3.1. ref修飾子の概要

  • 役割
    ref修飾子は、メソッドに変数への参照を渡すことで、メソッド内でその変数を直接変更できるようにします。
  • 特徴
    呼び出し前に変数を必ず初期化する必要があります。メソッド側で値を変更すると、呼び出し元の変数も更新されます。

3.2. DoubleValueメソッドの説明

  • 機能
    渡された整数valueの2倍の値を計算し、その結果を元の変数に直接反映させます。
  • パラメータ
  • ref int value: 値を参照渡しし、メソッド内で更新された内容が呼び出し元にも反映されます。
  • 動作
    メソッド内でvalue = value * 2;と記述することで、Mainメソッド内のvalue変数が更新されます。

3.3. Mainメソッドの動作

  • 処理の流れ
    • 変数value10で初期化します(refパラメータとして渡すため必須です)。
    • DoubleValueメソッドを呼び出し、valueの値を直接更新します。
    • 更新された値をコンソールに出力します。

4. まとめ

この資料では、C#のref修飾子を用いた基本的な使い方をシンプルな例で学びました。

  • ref修飾子を使うことで、メソッド内で変数を直接更新し、その変更を呼び出し元に反映させることができます。
  • この例では、整数の2倍の値に更新する方法を紹介しました。

この基本的なパターンを理解することで、変数の値をメソッド間で直接やり取りするシナリオでもref修飾子を活用できるようになります。

C#

Posted by hidepon