配列パラメータを渡すクライアントまで、フルのC#:なぜその暗黙のうちにする。
-
25-09-2019 - |
質問
想定は、次のコードな ref
キーワードに、それはもちろんなの変数に渡され、"表現として渡された値です。
class ProgramInt
{
public static void Test(int i) // Pass by Value
{
i = 2; // Working on copy.
}
static void Main(string[] args)
{
int i = 1;
ProgramInt.Test(i);
Console.WriteLine(i);
Console.Read();
// Output: 1
}
}
現在はその機能として期待、追加の ref
キーワード:
class ProgramIntRef
{
public static void Test(ref int i) // Pass by Reference
{
i = 2; // Working on reference.
}
static void Main(string[] args)
{
int i = 1;
ProgramInt.Test(ref i);
Console.WriteLine(i);
Console.Read();
// Output: 2
}
}
現地に行ってperplex理由としては、配列員が渡された機能を暗黙的に参照によって渡される。な配列で値のか。
class ProgramIntArray
{
public static void Test(int[] ia) // Pass by Value
{
ia[0] = 2; // Working as reference?
}
static void Main(string[] args)
{
int[] test = new int[] { 1 };
ProgramIntArray.Test(test);
Console.WriteLine(test[0]);
Console.Read();
// Output: 2
}
}
解決
いいえ、配列は、それらが参照型である意味し、クラスです。
他のヒント
配列は参照によって渡されていません。配列への参照は、値によって渡されます。この意味アレイ変更する必要なら渡された配列変数ポイントに(例えば、配列のサイズを変更する)、変数は参照によって渡されなければならない。
めの良い方法でこれを認識してください:
- "参考"による 別名 へ 変数
- 配列である 収集の変数;各要素は可変となります。
き配列が正常にすぐ 集変数.は、変数コレクションには変わりません。
き配列との"関係していることから、こうしたしま を新しい名前の変数を含む配列.
きる配列要素を正常にすぐ の値を変数.
きる配列要素-可変との"関係していることから、こうした、 を新しい名前と変数.
しょう?
あなたは値によって200万要素の配列を渡す想像できますか?今、要素型がdecimal
であることを想像してみてください。あなたは、<ストライキ> 240メガバイトストライキ>データの30.5175781メガバイトの周りにコピーする必要があります。
所属していません StackOverflow