از متغیر ها میتوان برای ذخیره سازی یک مقدار در برنامه استفاده کرد. گاهی اوقات نیاز است مقادیر زیادی را ذخیره کنیم که در این صورت نیاز به تعریف تعداد زیادی متغیر است. در این مواقع میتوان از آرایه ها به جای متغیر ها استفاده نمود.
آرایه ها در سی شارپ
یاد گرفتیم که یک متغیر می تواند تنها یک مقدار را در خود جای دهد. برای مثال ;int x = ۱
. تنها یک مقدار میتواند به متغیر x
انتساب داده شود. فرض کنید که می خواهید صد مقدار مختلف را ذخیره کنید. در این صورت تعریف صد متغیر کار بسیار سختی خواهد بود. برای حل این مشکل سی شارپ آرایه ها را معرفی کرد. یک آرایه یک نوع داده ای خاص است که می تواند تعداد مشخصی مقدار را در خود به صورت دنباله ای از مقادیر ذخیره کند. شکل زیر نحوه ذخیره مقادیر در یک آرایه را نشان می دهد :
همانطور که در شکل بالا می بینید index
یک عدد بوده که از مقدار صفر آغاز میشود. شما می توانید تعداد مشخصی مقدار را در یک آرایه ذخیره کنید.
تعریف آرایه
یک آرایه میتواند با استفاده از یک نوع داده که به دنبال آن []
می آید، تعریف شود :
int[] intArray; // can store int values
bool[] boolArray; // can store boolean values
string[] stringArray; // can store string values
double[] doubleArray; // can store double values
byte[] byteArray; // can store byte values
Student[] customClassArray; // can store instances of Student class
مقدار دهی اولیه آرایه
یک آرایه را میتوان در هنگام تعریف مقداردهی اولیه نیز کرد. این کار با استفاده از کلمه کلیدی new
امکان پذیر است. نمونه مثال زیر سه روش تعریف و مقدار دهی آرایه ها را نشان میدهد :
// defining array with size 5. add values later on
int[] intArray1 = new int[5];
// defining array with size 5 and adding values at the same time
int[] intArray2 = new int[5]{1, 2, 3, 4, 5};
// defining array with 5 elements which indicates the size of an array
int[] intArray3 = {1, 2, 3, 4, 5};
در نمونه مثال بالا اولین عبارت ابتدا یک آرایه را با نوع داده ای int
(که می تواند ۵ مقدار صحیح را در خود ذخیره کند) تعریف و مقداردهی کرده است. عبارت دوم نیز همانند عبارت اول عمل تعریف را انجام داده و سپس کار مقدار دهی اولیه را با مقادیر انجام داده است.
عبارت سوم بدون اینکه تعداد خانه های آرایه را مشخص کند، کار مقداردهی را انجام داده است. در این حالت اندازه آرایه به صورت اتوماتیک از تعداد مقادیر برداشته خواهد شد. در صورتی که عمل مقدار دهی را بدون مشخص کردن اندازه آرایه (مثال زیر) انجام دهیم با خطای کامپایلری روبرو می شویم. نمونه مثال زیر در هنگام کامپایل باعث خطا خواهد شد :
int[] intArray = new int[]; // compiler error: must give size of an array
مقدار دهی بعد از تعریف
آرایه ها را می توان بعد از تعریف مقداردهی اولیه کرد. الزامی وجود ندارد که عملیات تعریف و مقداردهی اولیه در یک زمان انجام شود. به مثال زیر توجه کنید :
string[] strArray1, strArray2;
strArray1 = new string[5]{ "1st Element", "2nd Element", "3rd Element", "4th Element", "5th Element" };
strArray2 = new string[]{ "1st Element", "2nd Element", "3rd Element", "4th Element", "5th Element" };
با این وجود زمانی که از این روش استفاده می کنید، در هنگام مقداردهی اولیه حتما باید از کلمه کلیدی new
استفاده کنید. در این حالت نمیتوان تنها با انتساب مقادیر کار مقدار دهی را انجام داد. مثال زیر با خطا روبرو خواهد شد :
string[] strArray;
strArray = {"1st Element","2nd Element","3rd Element","4th Element" };
دسترسی به عناصر آرایه
همانطور که گفته شد مقادیر میتوانند در زمان تعریف آرایه به آن انتساب داده شود. با این حال مقادیر میتوانند به صورت تصادفی با استفاده از مقادیر index
به خانه های آرایه انتساب داده شوند :
int[] intArray = new int[5];
intArray[0] = 10;
intArray[1] = 20;
intArray[2] = 30;
intArray[3] = 40;
intArray[4] = 50;
به همین روش می توان مقادیر خانه های مشخصی از آرایه را واکشی کرد :
intArray[0]; //returns 10
intArray[2]; //returns 30
می توان با استفاده از یک حلقه for
تمام مقادیر یک آرایه را در صفحه کنسول چاپ کرد :
int[] intArray = new int[5]{10, 20, 30, 40, 50 };
for(int i = 0; i < intArray.Length; i++) Console.WriteLine(intArray[i]);
خروجی نمونه مثال بالا به شکل زیر خواهد بود :
10 20 30 40 50
کلاس های کمکی برای آرایه ها
کتابخانه دات نت کلاس Array
را به عنوان کلاس پایه برای همه آرایه ها فراهم آورده است. این کلاس شامل متدهای استاتیکی هست که برای ایجاد، دستکاری، جستجو و مرتب سازی آرایه ها استفاده می شود. برای مثال با استفاده از تابع ()Array.Sort
می توان مقادیر یک آرایه را مرتب سازی کرد :
int[] intArr = new int[5]{ 2, 4, 1, 3, 5};
Array.Sort(intArr);
Array.Reverse(intArr);