از متغیر ها میتوان برای ذخیره سازی یک مقدار در برنامه استفاده کرد. گاهی اوقات نیاز است مقادیر زیادی را ذخیره کنیم که در این صورت نیاز به تعریف تعداد زیادی متغیر است. در این مواقع میتوان از آرایه ها به جای متغیر ها استفاده نمود.
آرایه ها در سی شارپ
یاد گرفتیم که یک متغیر می تواند تنها یک مقدار را در خود جای دهد. برای مثال ;int x = 1 . تنها یک مقدار میتواند به متغیر 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);