Új hozzászólás Aktív témák
-
Jhonny06
veterán
Nem állítottál be visszatérési értéket a függvényednek, azaz void. Érték szerinti paraméterátadásnál csak egy másolat készül a változóról, amit a függvénybeli értéke fel is vesz, de visszatérésnél a main() függvényben az eredetit írod ki, ami nem kapta meg. A tömböt dinamikusan foglaltad le, a függvényben egyből a memóriába írod, így az jó. A number változódat ne érték szerint add át, hanem mutatóval. Vagy legyen a függvényednek visszatérési értéke és akkor az x-el térj vissza.
-
Jhonny06
veterán
Pl.:
static int m(int x, int[] y)
{
x = 3;
y[0] = 3;
return x; //!!!!!!!!!!
}
static void Main(string[] args)
{
int number = 0;
int[] numbers = new int[1];
System.Console.WriteLine("number is " + m(number, numbers) + " and numbers[0] is " + numbers[0]);
Console.ReadLine();
}[ Szerkesztve ]
-
Jester01
veterán
Igen, az int az értéktípus, az int[] pedig referencia típus. Az int[] elemei ettől függetlenül nem int típusú objektumok, szerintem ott valamit félreértettél.
Érték típus átadásakor másolat készül az értékről, ahogy azt fentebb a kollega is írta. Referencia típusnál csak a referenciából készül másolat, nem magáról az objektumról. Tehát a függvényedben y ugyanarra a tömb objektumra referencia, ezért a benne lévő elemeket tudod módosítani akkor is, ha azok már érték típusok. Továbbá csinálhatsz egy új tömböt is, pl.: y = new int[1];. Ezáltal az y már erre az új tömbre fog hivatkozni. Viszont mivel magából a referenciából másolatod van, ez semmilyen módon nem befolyásolja a Main-ben lévő tömböt.
Használhatod még a ref kulcsszót paraméterek átadásához, ekkor semmilyen másolat nem készül. Mind az x mind az y értékének változása egyből kihat a Main-re is.
Jester
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Promenade Publishing House Kft.
Város: Budapest