C#のoutおよびrefキーワードの使い方
C#では、メソッドに引数を渡す際に特別な役割を持つout
およびref
キーワードがあります。これらのキーワードを使うことで、メソッド内で引数の値を変更し、その変更をメソッドの外でも反映させることができます。本資料では、それぞれのキーワードの使い方と違いについて説明します。
ref
キーワード
概要
ref
は、変数を参照渡しするために使います。これにより、メソッド内で変数の値を変更すると、その変更が呼び出し元にも反映されます。ref
を使用する場合、呼び出し元で変数は初期化されている必要があります。
使用例
using System;
class Program
{
static void Main()
{
int number = 10;
Console.WriteLine("Before method call: " + number);
ChangeValue(ref number);
Console.WriteLine("After method call: " + number);
}
static void ChangeValue(ref int num)
{
num = 20;
}
}
説明
この例では、number
の値は最初10
ですが、ChangeValue
メソッド内で20
に変更されます。その結果、メソッド呼び出し後のnumber
の値は20
になります。
実行結果
Before method call: 10
After method call: 20
ポイント
ref
を使う場合、呼び出し元で変数を初期化しておく必要があります。- メソッド内での変更は、呼び出し元にも反映されます。
out
キーワード
概要
out
は、変数を参照渡しする点ではref
と似ていますが、いくつかの違いがあります。out
を使用する場合、呼び出し元で変数を初期化する必要はありません。しかし、メソッド内でその変数に必ず値を設定する必要があります。
使用例
using System;
class Program
{
static void Main()
{
int result;
CalculateSum(5, 10, out result);
Console.WriteLine("Sum: " + result);
}
static void CalculateSum(int a, int b, out int sum)
{
sum = a + b;
}
}
説明
この例では、result
は初期化されていませんが、CalculateSum
メソッド内で値が設定されます。メソッド呼び出し後、result
の値は15
になります。
実行結果
Sum: 15
ポイント
out
を使う場合、呼び出し元で変数を初期化する必要はありません。- メソッド内で必ず変数に値を設定する必要があります。
違いのまとめ
- ref: 変数は呼び出し元で初期化されている必要があります。メソッド内で変更された値は呼び出し元にも反映されます。
- out: 変数は呼び出し元で初期化されている必要はありませんが、メソッド内で必ず値が設定されます。
実際の使いどころ
ref
の使いどころ
- 既存の変数の値を変更したい場合に使用します。
- 例: メソッド内で計算結果を直接変更する場合。
out
の使いどころ
- メソッドから複数の値を返したい場合に使用します。
- 例: メソッド内で計算を行い、その結果を引数として返す場合。
ディスカッション
コメント一覧
まだ、コメントがありません