C#でrefとoutの違い

C#メソッドの引数に付加するrefとoutの違いについて。

どちらも引数の参照渡しを実現するもの。 しかし挙動には若干の違いがある。

簡単にまとめると以下のようになる。

refで渡す引数は初期化されている必要がある。 メソッド内部で初期化する必要はない。

outは渡す引数は初期化されている必要はない。 メソッド内部で初期化する必要がある。

サンプルコードは以下がわかりやすい。

C#におけるref修飾子とout修飾子の違い - つばろぐ