refとアウトの違いを理解しやすいです

REF出て頻繁に使用されるC#の開発者に2つのキーワードですが、多くの人々は、我々は以下のこれらの二つの重要な相違点を探し、これらの2つの特定のキーワードの違いを把握していません。

類似点と相違点ゼロ、refとのうち

  1. 同じ:
  • これらはアドレスで渡されます。
  • 使用後は、パラメータの元の値を変更します。
  • 同じコンパイル時に処理されました。
  • 属性は、パラメータとして渡すことはできません。
  1. 異なります:
  • 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;
}

出力は次のようになります。
Zh3gpQ.png

アウトメソッドに渡されたパラメータ値にはできません

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;
}

出力は次のようになります。
Zh8EnI.png

小さな拡張:refまたはoutパラメータを使用する方法、および他の方法は、パラメータのこれらの2つのタイプを使用していない場合は、それを再ロードすることができます。以下のサンプルコードをコンパイルすることができるオーバーロードされます。

static void Function(out int num)
{
    num = 120;
    num = num / 2;
}
static void Function(int num)
{
    num = num / 2;
}

おすすめ

転載: www.cnblogs.com/gangzhucoll/p/11260900.html