ارسال آرایه به عنوان آرگومان
میتوان آرایهها را به عنوان آرگومان به متد ارسال کرد. ابتدا شما باید پارامترهای متد را طوری تعریف کنید که آرایه دریافت کنند. به مثال زیر توجه کنید.
1: using System; 2: 3: public class Program 4: { 5: static void TestArray(int[] numbers) 6: { 7: foreach (int number in numbers) 8: { 9: Console.WriteLine(number); 10: } 11: } 12: 13: public static void Main() 14: { 15: int[] array = { 1, 2, 3, 4, 5 }; 16: 17: TestArray(array); 18: } 19: }
1 2 3 4 5
مشاهده کردید که به سادگی میتوان با گذاشتن کروشه بعد از نوع دادهای پارامتر یک متد ایجاد کرد که پارامتر آن، آرایه دریافت میکند. وقتی متد در خط 17 فراخوانی میشود، آرایه را فقط با استفاده از نام آن و بدون استفاده از اندیس ارسال میکنیم. پس آرایهها هم به روش ارجاع به متدها ارسال میشوند. در خطوط 10-7 از حلقه foreach برای دسترسی به اجزای اصلی آرایه که به عوان آرگومان به متد ارسال کردهایم استفاده میکنیم. در زیر نحوه ارسال یک آرایه به روش ارجاع نشان داده شده است.
1: using System; 2: 3: public class Program 4: { 5: static void IncrementElements(int[] numbers) 6: { 7: for (int i = 0; i < numbers.Length; i++) 8: { 9: numbers[i]++; 10: } 11: } 12: 13: public static void Main() 14: { 15: int[] array = { 1, 2, 3, 4, 5 }; 16: 17: IncrementElements(array); 18: 19: foreach (int num in array) 20: { 21: Console.WriteLine(num); 22: } 23: } 24: }
2 3 4 5 6
برنامه بالا یک متد را نشان میدهد که یک آرایه را دریافت میکند و به هر یک از عناصر آن یک واحد اضافه میکند. به این نکته توجه کنید که از حلقه foreach نمیتوان برای افزایش مقادیر آرایه استفاده کنیم چون این حلقه برای خواندن مقادیر آرایه مناسب است نه اصلاح آنها. در داخل متد ما مقادیر هر یک از اجزای آرایه را افزایش دادهایم.. سپس از متد خارج شده و نتیجه را نشان میدهیم. مشاهده میکنید که هر یک از مقادیر اصلی متد هم اصلاح شدهاند. راه دیگر برای ارسال آرایه به متد، مقدار دهی مستقیم به متد فراخوانی شده است.
به عنوان مثال :
IncrementElements( new int[] { 1, 2, 3, 4, 5 } );
در این روش ما آرایهای تعریف نمیکنیم بلکه مجموعهای از مقادیر را به پارامتر ارسال میکنیم که آنها را مانند آرایه قبول کند. از آنجاییکه در این روش آرایهای تعریف نکردهایم نمیتوانیم در متد Main نتیجه را چاپ کنیم. اگر از چندین پارامتر در متد استفاده میکنید همیشه برای هر یک از پارامترهایی که آرایه قبول میکنند از یک جفت کروشه استفاده کنید. میتوان آرایهها را به عنوان آرگومان به متد ارسال کرد. ابتدا شما باید پارامترهای متد را طوری تعریف کنید که آرایه دریافت کنند.
به عنوان مثال :
void MyMethod(int[] param1, int param2) { //code here }
به پارامترهای متد بالا توجه کنید، پارامتر اول (param1) آرگومانی از جنس آرایه قبول میکند ولی پارامتر دوم (param2) یک عدد صحیح. حال اگر پارامتر دوم (param2) هم آرایه قبول میکرد باید برای آن هم از کروشه استفاده میکردیم:
void MyMethod(int[] param1, int[] param2) { //code here }