何かのようなもの:
- メソッド呼び出し後の変数の値を返す必要がある場合:
- メソッド呼び出しの前にインスタンス化できる場合は、ref を使用します
呼び出しが out を使用する前にインスタンス化する必要がない場合
変数の値が、メソッド呼び出しから他の値を返す、決定する、または計算するために使用される場合は、ref も out も使用しないでください。
正しく取得できましたか?あなたの短いガイドラインは何ですか?
何かのようなもの:
呼び出しが out を使用する前にインスタンス化する必要がない場合
変数の値が、メソッド呼び出しから他の値を返す、決定する、または計算するために使用される場合は、ref も out も使用しないでください。
正しく取得できましたか?あなたの短いガイドラインは何ですか?
値型の場合:
元のストアで変更する必要がある場合は、refを使用してください。例 :
int a = -3;
protected void EnsurePositiveValues(ref int value)
{
if (value < 0)
value = 0;
}
参照型の場合:
元の参照を(再)割り当てる必要がある場合は、refを使用してください。例 :
User u = MembershipAPI.GetUser(312354);
protected void EnsureUser(ref User user)
{
if (user == null)
user = new User();
}
また、値と参照型を考慮する必要があります。参照型をパラメーターとしてメソッドに渡すときは、変数へのポインターを渡します。つまり、メソッド内で変数に変更を加えることができ、メソッドを呼び出したコードでそれらを使用できるようになります。ただし、nullに設定すると、ポインターをnullに設定するだけで、変数はそのままになります。メソッドが戻ります。
これが本当にあなたの質問に答えているかどうかはわかりませんが、私が見つけたref(outキーワードを使用)で値を渡す良い使用法の1つは...
int i = 0;
if (int.TryParse("StringRepresentation", out i)
{
// do something with i which has taken the value of a the previous successful TryParse
}