C# を学習していると、似ていながらも使用法が異なる言語コマンドなどに必ず遭遇します。今日は、C# の out と ref の違いについて説明します。まず、使用法について説明します。それぞれの、以下に out と ref の違いをまとめます。 apache php mysql
どちらもアドレスで渡され、元のパラメータの値は使用後に変更されます。
ref はパラメーターの値を関数に渡すことができますが、out はパラメーターをクリアする必要があります。つまり、out から値を渡すことはできません。out が入力された後、パラメーターの値は空になります。そのため、一度初期化する必要があります。これがこの2つの違いで、一部のネチズンが言ったように、refは出入りの両方を意味し、outは外出するだけで中には入らないことを意味します。
ref (C# リファレンス)
ref キーワードを使用すると、パラメーターが参照によって渡されます。その結果、制御が呼び出し側メソッドに戻されると、メソッド内のパラメータへの変更が変数に反映されます。 ref パラメーターを使用するには、メソッド定義とメソッド呼び出しの両方で明示的に ref キーワードを使用する必要があります。 ######例えば:###############
12
4 5 6 ###7### 89 10 11 12 13 14
クラス 参考例
| {
void ref i = 44; } Main()
int
}
|
2
3
5 6 ###7###
クラス CS0663_Example
{ |
void int int #1 | 3
5
クラス RefOutOverloadExample { |
public
|
ref キーワードと out キーワードは、実行時には異なる方法で処理されますが、コンパイル時には同じ方法で処理されます。したがって、1 つのメソッドが ref パラメーターを受け取り、別のメソッドが out パラメーターを受け取る場合、両方のメソッドをオーバーロードすることはできません。たとえば、次のコードの 2 つのメソッドはコンパイルの観点からは同一であるため、次のコードはコンパイルされません:
2 3 4 5 6 ###7###クラス | CS0663_Example
| ただし、1 つのメソッドが ref または out パラメータを受け取り、別のメソッドがこれら 2 種類のパラメータを受け取らない場合は、次のようにオーバーロードできます。
3 4 5 クラス | RefOutOverloadExample
以下は私の経験に基づいてまとめたものです: 違い ref と out の違い C# では、パラメーターは値またはによって渡すことができます。参照 。パラメーターを参照渡しすると、関数メンバーがパラメーターの値を変更し、その変更を保持できるようになります。パラメータを参照によって渡すには、ref または out キーワードを使用します。 ref キーワードと out キーワードはどちらも同様の関数を提供し、C のポインター変数とよく似た機能を提供します。両者の違いは次のとおりです: 1. ref 型パラメータを使用する場合、渡されるパラメータを最初に初期化する必要があります。 out の場合は、メソッド内で初期化する必要があります。 2. ref と out を使用する場合、メソッドのパラメータとメソッドの実行時に Ref または Out キーワードを追加する必要があります。試合を満足させるために。 3. Out は、retrun が複数の戻り値を必要とする場合の使用に適しており、ref は、呼び出されたメソッドが呼び出し元の参照を変更する必要がある場合に使用されます。 メソッド パラメーターの out メソッド パラメーター キーワードにより、メソッド参照がメソッドの同じ変数に渡されます。メソッド内のパラメータに加えられた変更は、制御が呼び出し側メソッドに戻されるときにこの変数に反映されます。 out メソッドの宣言は、メソッドが複数の値を返すようにする場合に便利です。 out パラメーターを使用するメソッドは引き続き値を返すことができます。メソッドには複数の out パラメーターを含めることができます。 out パラメーターを使用するには、パラメーターを out パラメーターとしてメソッドに明示的に渡す必要があります。 out パラメータの値は out パラメータに渡されません。 出力パラメータとして渡される変数は初期化する必要はありません。ただし、メソッドが戻る前に、out パラメータに値を割り当てる必要があります。 プロパティは変数ではないため、出力パラメータとして渡すことはできません。 つまり、これを一文にまとめると、ref は入ることと出ることの両方を意味し、out は出るだけで入ってこないことを意味します。 関連記事: |
以上がC# の out と ref についてどう思いますか?それらの違いを調べてくださいの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。