\r\n\r\n
C言語とは、マイクロソフト社が開発した現代的なプログラミング言語である。デスクトップ、ウェブ、モバイルなど様々なアプリケーションの開発に利用されています。関数やメソッドは、プログラミングにおける概念の一つです。特定のタスクを実行するために使用されるステートメントのグループは、関数またはメソッドと呼ばれます。C言語プログラムでは、main()で実行が開始されます。これはメソッドの一例です。メソッドが呼び出されると、データがメソッドに渡されたり、メソッドから受け取られたりします。新しいメソッドを呼び出すメソッドを呼び出しメソッドと呼びます。この新しいメソッドをコールメソッドと呼びます。渡された値と返された結果を管理するために、C言語ではパラメータを使用します。パラメータには、値パラメータ、出力パラメータ、参照パラメータがある。値パラメータは、値によってパラメータをメソッドに渡すために使用されます。参照パラメータは、参照によってメソッドに引数を渡すために使用されます。出力パラメータは、メソッドから結果を返すために使用されます。C#では、outキーワードは出力パラメータに、refキーワードは参照パラメータに使用されます。C言語のoutとrefの主な違いは、outは呼び出したメソッドから呼び出したメソッドに結果を渡すために使用する出力パラメータを参照するために使用するキーワードで、refは呼び出しメソッドから呼び出しメソッドにデータを渡すために使用する参照パラメータを参照するためのキーワードであることですと、呼び出されたメソッドから呼び出されたメソッドのメソッドにデータを受信することです。
1. 概要と主な相違点 2. C言語とは何か #3. C言語における参照とは何か #4. outとrefの類似点 #5. 横並びの比較 - C言語における参照と表 6. まとめ
関数やメソッドの構文は次のとおりです。メソッドは、メソッド名、パラメータリスト、戻り値の型、アクセス記述子など多くの要素を持っています。
(パラメータ一覧)
{/// 実行されるステートメント
}
それぞれのメソッドは、関数を呼び出す方法がユニークです。実行可能な文は、中括弧の中にあります。戻り値の型は、その関数が値を返すかどうかを説明します。戻り値がない場合は void と呼ぶ。 アクセスディスクリプタは、アプリケーションにおけるメソッドのアクセス性を指定するために使用される。パラメータは、データを受け取ったり、メソッドにデータを渡したりするために使用します。また、パラメータを持たないメソッドを持つことも可能です。パラメータには、値パラメータ、出力パラメータ、参照パラメータがあります。
出力パラメータは、呼び出し元のメソッドに結果を戻すために使用されます。そのためには、パラメータをキーワードoutで宣言する必要があります。出力パラメータは、新しいストレージの場所を作成しません。通常、メソッドは1つの値を返します。しかし、C#では、outputパラメータを使用して、関数から2つの値を返すことが可能である。以下のプログラムをご参照ください。
名前空間アプリケーション 1{.
Public class calculations {
public blank display (out int a, out int b) {。
int value = 5.
a = 値です。
b = 値です。
a = a*a とする。
b = b*b です。
}
public static void main(String[]args){...
int 値1 = 10、値2 = 20。
計算 cal = 新しい計算()。
キャリブレーション表示(出力値1、出力値2)。
Console.ReadLine()。
}
}
}
表示関数はmainメソッドから呼び出されます。value1とvalue2は値10と20を持っていますが、このメソッドには含まれません。関数内のaの値は25で、bの値も25なので、これらの値が返されます。value1とvalue2が表示されるとき、10と20は表示されず、代わりに25と25が表示されます。
パラメータが値で渡される場合、パラメータごとに新しい格納場所が作成される。メインプログラムから送信される実際のパラメータは変更されません。その代わり、値は別の場所にコピーされます。これらの新しい変数のコピーは、フォーマルパラメーターと呼ばれます。以下のコードを参照してください。
名前空間アプリケーション 1{.
Public class calculations {
public void exchange (int x, int y) {.
内部温度
温度=x。
x = y とする。
y = 温度。
}
public static void main(String[]args){...
計算 cal = 新しい計算()。
int p=2.
積分値q=3。
校正交換(p、q)。
Console.WriteLine (p)。
Console.WriteLine(q)。
Console.ReadLine()。
}
}
}
上のプログラムによると、Calculationクラスはswap()というメソッドを持っています。メインプログラムでは、Calculation型のオブジェクトが作成されます。例えばpとqという2つの値があり、変数pの値は2、変数qの値は3である。この2つの値はswapメソッドに渡される。swapメソッドでは、変数xに値2、変数yに値3をコピーし、temp変数を用いて値を入れ替えている。メインプログラムに戻って、pとqをプリントしても、値は入れ替わらず、pは値2のまま、qは値3のままです。 swapメソッドでも、値は入れ替わりますが、メインプログラムには反映されません。
上記のような値の受け渡しとは対照的に、パラメータは参照渡しすることができる。参照変数とは、メモリ上の位置への参照である。新しいメモリロケーションは作成されません。メソッドの変更は、メインプログラムに反映されます。C#では、参照パラメータはrefキーワードで参照します。以下のプログラムをご参照ください。
名前空間アプリケーション 1{.
Public class calculations {
public void swap (ref int x, ref int y) {.
内部温度
温度=x。
x = y とする。
y = 温度。
}
public static void main(String[]args){...
計算 cal = 新しい計算()。
int p=2.
積分値q=3。
校正交換(リファレンスp、リファレンスq)。
Console.WriteLine (p)。
Console.WriteLine(q)。
Console.ReadLine()。
}
}
}
以上の手順により、交換法によるクラスが算出される。メインプログラムでは、Calculationタイプのオブジェクトが作成されます。p は値 2、q は値 3 である。値を渡す代わりに、p と q のメモリ位置への参照がメソッドに渡される。これらのパラメータは、参照されるメソッドではなく、新しい位置のパラメータを参照します。メインプログラムのpとqの値を印刷すると、入れ替わった値が表示されます。p値は3、q値は2になりました。
出力とリファレンス入力 C# | |
outは、C言語で出力パラメータを指すキーワードで、呼び出されたメソッドの結果を呼び出し側のメソッドに渡すために使用されます。 | refは、C言語で参照パラメータを参照するために使用されるキーワードです。呼び出したメソッドから呼び出されたメソッドにデータを渡したり、呼び出されたメソッドから呼び出したメソッドにデータを戻したりするために使用されます。 |
機能 | |
キーワードoutを使用すると、呼び出し側のメソッドから呼び出されたメソッドにデータを渡すことができます。しかし、このデータは破棄される。呼び出されたメソッドから呼び出したメソッドに結果を渡すために使用されます。 | キーワード ref が使用された場合、データは呼び出し側のメソッドから呼び出し側のメソッドに渡され、 **垂直方向のデータは呼び出し側のメソッドに戻されます。 |
データ転送 | |
キーワードoutが使われると、呼び出されたメソッドにデータが渡されます。 | キーワードrefを使用する場合、データは呼び出し側のメソッドから呼び出し側のメソッドへ、呼び出し側のメソッドから呼び出し側のメソッドへ、という2つの方法で渡されます。 |
メソッドを呼び出す際に、メソッドとの間で値を受け渡しする必要がある場合があります。cには、これを実現するためのさまざまなパラメータがあります。valueパラメータは、メソッドに引数を値で渡すために使用されます。参照パラメータは、参照によってメソッドにパラメータを渡すために使用されます。出力パラメータは、メソッドから結果を返すために使用されます。C#では、outキーワードは出力パラメータに、refキーワードは参照パラメータに使用されます。C言語のoutとrefの違いは、outは呼び出したメソッドから呼び出したメソッドに結果を渡すために使用する出力パラメータを参照するためのキーワードであり、refは呼び出し側のメソッドから呼び出したメソッドにデータを渡すために使用する参照パラメータとからデータを受け取るためのキーワードである点です。呼び出されたメソッドから呼び出されたメソッドにデータを受信するためのものです。
本記事のPDF版をダウンロードし、引用元に従ってオフラインで使用することができます。PDF版はこちらからダウンロードできます:C#におけるOutとRefの違いについて
1tutorialspoint.comのウェブサイト。"Cメソッド"ハイライト2.dnf動画はこちらでご覧いただけます。 c#Out parameters Vs REF parameters, .NET interview preparation video, 28 September 2015.こちらからご覧いただけます 2.DNFvideo.C#Out Parameters Vs REF Parameters, .NET Interview Preparation Video, 28 September 2015.