Je me suis demandé pourquoi ma méthode ne modifiait pas le tableau, alors que je l'ai utilisé comme paramètre et l'ai rendu égal à un autre tableau avec des valeurs différentes, à l'intérieur de la méthode ? Est-ce que je change simplement l'adresse de référence ?
static void Main()
{
string[] array = { "yes", "no", "maybe" };
TestO(array); // Still "yes", "no", "maybe"
}
static void TestO(string[] array)
{
string[] secondArray = new string[array.Length];
secondArray[0] = "1";
secondArray[1] = "2";
secondArray[2] = "3";
array = secondArray;
}
Mon hypothèse : je n'ai pas modifié le tableau à l'intérieur de Main(), car en faisant array = secondArray;
dans le Test0()
méthode, Je viens de changer l'adresse de référence de array
a secondArray
.
Si ma supposition n'est pas correcte, ma question est la suivante : pourquoi exactement n'est-il pas modifié ?
(Je sais que je peux simplement modifier Test0()
à un string[]
et renvoie la version modifiée de la secondArray
et la transmettre à l array
en Main()
)
Une autre question se pose : Si j'utilise le string[]
et déclarer ce qui suit :
static void Main()
{
string[] array = { "yes", "no", "maybe" };
array = TestO(array);
}
static string[] TestO(string[] methodArray)
{
string[] secondArray = new string[methodArray.Length];
secondArray[0] = "1";
secondArray[1] = "2";
secondArray[2] = "3";
return secondArray;
}
array = TestO(array);
est-ce que je passe simplement l'adresse de référence du secondArray[]
a array[]
ou est-ce que je ne transmets que les valeurs de l'élément ? (Il est très probable que ce soit l'adresse de référence, mais je voulais m'en assurer).