REFと出て頻繁に使用されるC#の開発者に2つのキーワードですが、多くの人々は、我々は以下のこれらの二つの重要な相違点を探し、これらの2つの特定のキーワードの違いを把握していません。
類似点と相違点ゼロ、refとのうち
- 同じ:
- これらはアドレスで渡されます。
- 使用後は、パラメータの元の値を変更します。
- 同じコンパイル時に処理されました。
- 属性は、パラメータとして渡すことはできません。
- 異なります:
- REFメソッドに渡されたパラメータ値は、OUTは、メソッドパラメータ値に渡すことができません。
- REFパラメータを渡す前には、初期化されなければならないOUT伝送方式の前にパラメータを初期化するために必要な、その過程で初期化する必要があります。
- refの方法で使用するには、修正、参照、発信者と呼ばれる必要があるOUT代わりに使用する複数の結果を返す必要があります。
まず、コードのショー
refのメソッドに渡されたパラメータ値
static void Main(string[] args)
{
//初始化
int number = 50;
Console.WriteLine("调用方法前 number 值:" + number);
RefFunction(ref number);
Console.WriteLine("调用方法后 number 值:" + number);
Console.Read();
}
// 传入的参数值是 50 ,方法中使用的num值也是50
static void RefFunction(ref int num)
{
num = num / 2;
}
出力は次のようになります。
アウトメソッドに渡されたパラメータ値にはできません
static void Main(string[] args)
{
int number = 50;
Console.WriteLine("调用方法前 number 值:" + number);
OutFunction(out number);
Console.WriteLine("调用方法后 number 值:" + number);
Console.Read();
}
// 无法将的参数值50传入 ,但是必须在方法中初始化
static void OutFunction(out int num)
{
//初始化
num = 120;
num = num / 2;
}
小さな拡張:refまたはoutパラメータを使用する方法、および他の方法は、パラメータのこれらの2つのタイプを使用していない場合は、それを再ロードすることができます。以下のサンプルコードをコンパイルすることができるオーバーロードされます。
static void Function(out int num)
{
num = 120;
num = num / 2;
}
static void Function(int num)
{
num = num / 2;
}