Life24
26-08-2013, 14:58
سلام
دوستان محترم مگر ما هنگامی که یک آرایه را به متد ارسال میکنم در اصل آدرس خانه اول رو ارسال کردیم؟
در c++ که یادمه این طور بود که اسم رو میفرستادیم که میشد همان خانه اول آرایه(اشاره به خانه اول آرایه) و طول ارایه
در سی شارپ وقتی اسم ارایه را می نویسیم چطور است؟ چطور طولش پس تشخیص مدهد؟
و سوال اصلی که مربوط به سوال بالا هم میشه .اینجا آدرس رو فرستاده و در متد به صورت محلی 5 تا خونه تغیر داده شده با عناصر آن
اما تغیرات اعمال نشده! اما 1 دانه رو تغیر داده و تغیر روش اعمال شده.
منظور از ارسال با مقدار را میدانم اما این ارایه هست. و اسم ان که ادرس خانه اول هست ارسال شده است
منظور از ارسال ارجاع با مقدار چیست؟ اگر ارجاع هست پس مقدارش چیست؟ :n03:
class PassingRefByVal
{
static void Change(int[] pArray)
{
pArray[0] = 888; // This change affects the original element.
pArray = new int[5] {-3, -1, -2, -3, -4}; // This change is local.
System.Console.WriteLine("Inside the method, the first element is: {0}", pArray[0]);
}
static void Main()
{
int[] arr = {1, 4, 5};
System.Console.WriteLine("Inside Main, before calling the method, the first element is: {0}", arr [0]);
Change(arr);
System.Console.WriteLine("Inside Main, after calling the method, the first element is: {0}", arr [0]);
}
}
دوستان محترم مگر ما هنگامی که یک آرایه را به متد ارسال میکنم در اصل آدرس خانه اول رو ارسال کردیم؟
در c++ که یادمه این طور بود که اسم رو میفرستادیم که میشد همان خانه اول آرایه(اشاره به خانه اول آرایه) و طول ارایه
در سی شارپ وقتی اسم ارایه را می نویسیم چطور است؟ چطور طولش پس تشخیص مدهد؟
و سوال اصلی که مربوط به سوال بالا هم میشه .اینجا آدرس رو فرستاده و در متد به صورت محلی 5 تا خونه تغیر داده شده با عناصر آن
اما تغیرات اعمال نشده! اما 1 دانه رو تغیر داده و تغیر روش اعمال شده.
منظور از ارسال با مقدار را میدانم اما این ارایه هست. و اسم ان که ادرس خانه اول هست ارسال شده است
منظور از ارسال ارجاع با مقدار چیست؟ اگر ارجاع هست پس مقدارش چیست؟ :n03:
class PassingRefByVal
{
static void Change(int[] pArray)
{
pArray[0] = 888; // This change affects the original element.
pArray = new int[5] {-3, -1, -2, -3, -4}; // This change is local.
System.Console.WriteLine("Inside the method, the first element is: {0}", pArray[0]);
}
static void Main()
{
int[] arr = {1, 4, 5};
System.Console.WriteLine("Inside Main, before calling the method, the first element is: {0}", arr [0]);
Change(arr);
System.Console.WriteLine("Inside Main, after calling the method, the first element is: {0}", arr [0]);
}
}