メソッド自体からメソッドに渡される値を変更する必要がある場合があります。例として、このメソッドのような文字列をサニタイズします:
void SanitizeName(string Name)
{
Name = Name.ToUpper();
//now do something here with name
}
Name
引数は参照渡しではないため、これはまったく無害です。ただし、何らかの理由で、将来開発者がすべての値をrefで渡すことにした場合、文字列のサニタイズはメソッドの外部の値に影響を及ぼし、有害な結果を招く可能性があります。
したがって、引数自体に再割り当てする代わりに、常に次のようなローカルコピーを作成します。
void SanitizeName(string Name)
{
var SanitizedName = Name.ToUpper();
//now do something here with name
}
これにより、値が渡される方法を変更してもメソッドの外での進行に影響を与えないことが保証されますが、これについて過度に妄想を立てているのではないかと思います。
if (param == NULL) param = default_value;
ですか?
by ref
することを渡されていませんでした何らかの方法でローカルアクセスを非ローカルアクセスに変換するため、彼は常に結果を慎重にチェックする必要があります。
Name = Name.ToUpper();
は、Name
変更の価値としてあなたの頭の中でコードを追跡するのを難しくします。2番目の例は、将来を保証するだけでなく、何をしているのかを推論するのも簡単です。