Wpis z mikrobloga

#programowanie #pytanie #csharp

Jak w c# przekazać tablicę jako parametr do funkcji, tak aby przypisanie wartości 4 do pierwszego elementu nie modyfikowało tablicy numbers w funkcji main?

static void Test(int[] numbers)
{
numbers[0] = 4;
}

static void Main(string[] args)
{
int[] numbers = { 1, 2, 3 };
Test(numbers);
}
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Babooco: poczytaj o mutowalności. To jest że tak powiem domyślne zachowanie, tylko wystarczy to sobie zobrazować tak: dajesz znajomemu(funkcja) książkę(zmienna) żeby ją przeczytał powiedzmy. No ale on coś napisał w tej książce, jakieś dopiski. Więc jak ci ją zwraca (return) to masz ją popisaną.
Żeby osiągnąć ten efekt co chcesz musiałbys zrobić deep clone, nie wiem jak to w C płotku się robi.
  • Odpowiedz
@Babooco: tak w skrocie mordeczko, masz dwa typy danych:
-Value type
-Reference type

pierwszy jest taki, ze przekazujesz wartosc, czyli masz np
int x
  • Odpowiedz