29-03-2008, 18:19
|
|
|
|
חבר מתאריך: 01.05.06
הודעות: 7,861
|
|
[C#] - רפרנס במערכים שעוברים כפרמטר
למדנו במדעי המחשב לא מזמן העברת מערכים כארגומנטים, ונתקלתי בכמה שאלות.
לדוגמא הקוד הבא:
קוד:
using System;
public class test
{
static void Update(int a)
{
a++;
}
public static void Main()
{
int a = 5;
Console.WriteLine(a);
Update(a);
Console.WriteLine(a);
}
}
ערך המשתנה a לא ישתנה כי ה context של הפונקציה לא משפיע על Main.
אבל אם לעשות משהו כזה:
קוד:
public class test
{
const int N = 6;
static void Update(int[] a)
{
for (int i = 0; i < N; i++)
a[i]++;
}
public static void Main()
{
int[] arr = new int[N];
for (int i = 0; i < N; i++)
Console.WriteLine(arr[i]);
Update(arr);
Console.WriteLine("- - - - - - -");
for (int i = 0; i < N; i++)
Console.WriteLine(arr[i]);
}
}
המערך המקורי ישתנה גם כן, וכל הערכים שלו יעלו ב 1.
למה בעצם במערכים עובר רפרנס? ובמשתנים לדוגמא לא?
תודה לעונים
|