آرایهها در #C گروهی از متغیرها هستند که تحت یک نام در حافظه قرار میگیرند. در برنامهنویسی، گاهی اوقات نیاز پیدا میکنیم تا دستهای از اطلاعات را در یک مکان ذخیره کنیم. به عنوان مثال، ممکن است بخواهیم 1000 عدد مختلف را در حافظه نگهداری کنیم. در چنین مواقعی، استفاده از 1000 متغیر جداگانه منطقی نیست و بهتر است از آرایهها استفاده کنیم.
برای یادگیری زبان برنامه نویسی سی شارپ سایت باگتو به شما کمک می کند که آموزش سی شارپ(#C) را از سطوح پایه آموزش ببینید و در دوره آموزش سی شارپ پیشرفته به بالاترین سطح از دانش سی شارپ دست خواهید یافت.
آرایه مقداری از حافظه را که در اختیار دارد به خانه های که تعداد آن را ما مشخص می کنیم تقسیم می کند و مقادیر را در این خانه ها ذخیره می کند. که به هر مورد از این خانه ها عنصر آرایه گفته می شود. نوع آرایه در سی شارپ می تواند انواع داده معتبر مانند float , int , char , string ,long , و غیره باشد.
نکات مهم کار با آرایهها در#C:
- آرایهها داینامیک هستند: میتوانیم در طول اجرای برنامه، دادههای آنها را تغییر دهیم.
- طول آرایه: با استفاده از خصوصیت length میتوانیم طول آرایه را مشخص کنیم.
- مقداردهی اولیه: میتوانیم آرایهها را هنگام ایجاد با [] مقداردهی کنیم.
- آرایهها مرتب هستند: هر عنصر آرایه با یک شماره اندیس که از 0 شروع میشود، مشخص میشود
- آرایه ها در سی شارپ یک شئ از نوع system.array هستند.
- مقادیر پیش فرض برای آرایه های از نوع عددی مانند int , long مقدار 0 می باشد و برای آرایه های غیر عددی مقدار null به عنوان پیشفرض ذخیره می شود
- عناصر آرایه می توانند از هر نوعی باشند
- آرایه ها را می توانیم با حلقه های for و foreach پیمایش کنیم.
- زبان سی شارپ از آرایه های چند بعدی پشتیبانی می کند
این کلاس پایه برای همه آرایه ها استفاده می شود و ویژگی ها و روش های مختلفی را برای کار با آرایه ها ارائه می دهد.
کلاس array در سی شارپ
کلاس array در سی شارپ برای کار با آرایه ها ساخته شده است، این کلاس امکاناتی زیادی نظیر ایجاد، ویرایش، جستجو و مرتب سازی آرایه ها را به ما ارائه می دهد کلاس array بر اساس رابط IList ساخته شده است و یک مجموعه در نظر گرفته می شود. در ادامه این مقاله امکانات کلاس array را معرفی می کنیم. دانش کارایی این کلاس در جدول زیر properties های که کلاس array ارائه می دهد را مشاهده می کنید
IsFixedSize | با این خصوصیت می توانیم دریابیم که ارایه اندازه ثابت دارد یا خیر |
IsReadOnly | این خصوصیت مشخص می کند که نوع آرایه فقط خواندنی است یا خیر |
IsSynchronized | |
Length | تعداد عناصر ارایه را به ما برمیگرداند |
LongLength | تعداد عناصر ارایه را به صورت عدد 64 بیتی برمیگرداند |
Rank | این خصوصیت تعداد بعد ارایه را برمیگرداند |
متد های کلاس array را در جدول زیر بررسی می کنیم
AsReadOnly() | آرایه را به فقط خواندنی تبدیل می کند. |
BinarySearch() | با استفاده از الگوریتم جستجوی باینری یک مقدار را در آرایه تک بعدی جستجو می کند |
Clear() | این متد مقادیر داخل عناصر آرایه را پاک می کند و مقادیر پیش فرض را در عناصر قرار می دهد. که این مقدار بسته به نوع داده ای آ رایه 0 یا false و یا null می باشد. |
ConvertAll() | آرایه ای از یک نوع را به آرایه ای از نوع دیگر تبدیل می کند. |
Copy() | این متد برای کپی کردن عناصر یک آرایه در یک آرایه دیگر است. در پارامتر ورودی این متد می توانیم تعدادی که قصد کپی آن را داریم مشخص کنیم. مثال زیر 5 عنصر اول ارایه کپی می کند. Array.Copy(first,second,5); |
Empty() | آرایه خالی برمیگرداند |
Equals() | تعیین میکند که شئ وارد شده در پارامتر ورودی برابر با شئ فعلی است یا خیر |
Find() | یک مقدار از ورودی دریافت می کند و اولین عنصری که برابر با آن باشد را بر می گرداند. |
FindAll() | یک مقدار از ورودی دریافت می کند و همه ی عناصری که برابر با آن باشد را بر می گرداند. |
FindIndex() | یک مقدار را از ورودی می گیرد و index اولین عنصری که برابر با آن باشد را بر می گرداند |
FindLast() | یک مقدار از ورودی دریافت می کند و آخرین عنصری که برابر با آن باشد را بر می گرداند. |
FindLastIndex() | یک مقدار را از ورودی می گیرد و index آخرین عنصری که برابر با آن باشد را بر می گرداند |
FoeEach() | حلقه ی foreach را بر روی ارایه اجرا می کند. |
GetEnumerator() | IEnumerator را برای Array برمی گرداند. |
GetLength() | تعداد عناصر موجود در ارایه را بر میگرداند |
GetLongLength() | تعداد عناصر موجود در ارایه را به عدد 64 بیتی بر میگرداند |
GetLowerBound() | محدوده پایینی بعد ارایه را نشان می دهد. |
GetType() | نوع داده ی ارایه جاری را برمیگرداند |
GetUpperBound() | محدوده بالایی بعد ارایه را برمیگرداند |
GetValue() | این متد یک عدد که index ارایه است را دریافت میکند و مقدار آن را برمی گرداند. |
IndexOf() | این متد دو پارامتر به عنوان ورودی می گیرد پارامتر اول یک ارایه و پارامتر دوم یک مقدار، و مقدار را درآرایه جستجو می کند اگر مقدار درآرایه یافت شود Index آن را برمیگرداند. IndexOf(array,”bugeto”); |
Resize() | از این متد برای تغییر سایزآرایه های تک بعدی استفاده می کنیم |
Reverse() | این متد ترتیب عناصرآرایه تک بعدی را معکوس می کند |
SetValue() | مقداری را از پارامتر ورودی دریافت می کند و در عنصر مشخص شده قرار می دهد. |
Sort() | عناصر را در یک ارایه ی تک بعدی مرتب می کن |
مقدار دهی آرایه در سی شارپ
در زبان برنامه نویسی سی شارپ با 5 روش مختلف می توانیم مقدار دهی آرایه ها را انجام دهیم.
میتوانیم با استفاده از شماره Index به عنصر مورد نظر دسترسی داشته باشیم و مقدار دهی آن را انجام دهیم.
string[] learningSite = new string[10];
learningSite[0] = "bugeto.net";
این امکان نیز وجود دارد که هنگام تعریف آرایه همان لحظه مقدار دهی آن را انجام دهیم.
double[] balance = { 2340.0, 4523.69, 3421.0};
در یک خط کد می توانیم بعد از ایجاد کردن بلافاصله مقداردهی آن را انجام دهیم
int [] num = new int[5] { 20, 77, 118, 110, 115};
برای مقدار دهی می توانیم اندازه آرایه را وارد نکنیم و همانجا شروع به مقدار دهی کنیم
int [] num = new int[] { 20, 19, 88, 1399, 1400};
می توانیم با روش زیر یک متغیر را در یک متغیر دیگر کپی کنیم. در چنین حالتی هر دو متغیر به یک مکان از حافظه اشاره می کنند.
int [] num = new int[] { 20,150,186, 698, 7};
int[] score = marks;
هنگامی که یک آرایه ایجاد می کنیم، کامپایلر #C به طور ضمنی بسته به نوع آرایه، مقدار پیش فرضی برای آن در نظر می گیرد به عنوان مثال برای ارایه ای از نوع int تمام عناصر آن با 0 مقدار دهی می شوند.
با استفاده از Index به عناصر داخل یک آرایه دسترسی داریم. این کار با قرار دادن شماره Index در داخل علامت [ ] قابل اجرا است.
double salary = balance[9];
در مثال زیر یک ارایه با تعداد 10 عنصر ایجاد می کنیم و با یک حلقه مقادیری در عناصر آرایه قرار می دهیم سپس با یک حلقه دیگر دسترسی و نمایش عناصر ارایه را انجام می دهیم.
int[] n = new int[10]; /* تعریف یک ارایه عددی با اندازه 10 عنصر */
int i, j;
/* مقدار دهی عناصر ارایه */
for (i = 0; i < 10; i++)
{
n[i] = i + 100;
}
/* نمایش عناصر ارایه*/
for (j = 0; j < 10; j++)
{
Console.WriteLine("Element[{0}] = {1}", j, n[j]);
}
Console.ReadKey();
استفاده از حلقه foreach برای آرایه
در مثال قبلی از حلقه for برای دسترسی به عناصر آرایه استفاده کردیم. در این مثال از حلقه foreach برای دسترسی به عناصر آرایه استفاده می کنیم.
int[] n = new int[10]; /* تعریف یک ارایه عددی با اندازه 10 عنصر */
int i ;
/* مقدار دهی عناصر ارایه */
for (i = 0; i < 10; i++)
{
n[i] = i + 100;
}
/* نمایش عناصر ارایه*/
foreach (int j in n)
{
i = j - 100;
Console.WriteLine("Element[{0}] = {1}", i, j);
}
Console.ReadKey();
نحوه جستجو در آرايه سي شارپ
آرایه ها لیستی از داده های هم نوع است، هرجا از آرایه ها استفاده می کنیم نیاز به جستجو استفاده از عناصر آرایه هم داریم. در این آموزش با استفاده از کلاس array در سی شارپ انواع جستجوی که می توانیم بر روی آرایه ها در سی شارپ انجام دهیم را بررسی می کنیم.
جستجو در آرایه با استفاده از متد Find
با استفاده از متد Find() از کلاس array می توانیم جستجو در آرایه ها را انجام دهیم. این متد یک ارایه از ورودی دریافت می کند و با عبارات لامبدا در پارامتر ورودی دوم این متد نحوه جستجو را مشخص می کنیم. این متد در عناصر آرایه اولین عنصری را که شرایط جستجو شده را داشته باشد بر می گرداند.
string[] persons = new string[] { "ehsan", "mayasam", "jamshid", "samyar", "sasan", "ahora" };
var search1 = Array.Find(persons, p => p == "ehsan");
var search2 = Array.Find(persons, p => p.StartsWith("s"));
Console.WriteLine(search1);
Console.WriteLine(search2);
Console.ReadKey();
خروجی
ehsan
samyar
جستجو در آرایه با استفاده از متد FindAll
متد FindAll همانند متد Find عمل می کند با این تفاوت که Find فقط اولین عنصر را بر می گرداند ولی متد FindAll تمامی عناصری که شرایط را داشته باشند برمی گرداند. خروجی این متد نیز خود یک آرایه است، کد زیر یک مثال از این جستجو است که خروجی آن را با یک foreach نمایش می دهیم.
string[] persons = new string[] { "ehsan", "mayasam", "jamshid", "samyar", "sasan", "ahora" };
var search1 = Array.FindAll(persons, p => p.StartsWith("s"));
foreach (var item in search1)
{
Console.WriteLine(item);
}
Console.ReadKey();
خروجی
samyar
sasan
جستجو در آرایه با استفاده از متد FindLast
متد FindLast دقیقا همانند متد Find عمل می کند با این تفاوت که این متد آخرین عنصر یافت شده را بر می گرداند.
string searchFindLast = Array.FindLast(persons, p => p.StartsWith("s"));
جستجو در آرایه با استفاده از متد FindIndex
متد FindIndex جستجو را در آرایه انجام میدهد و Index اولین عنصری را که پیدا کند بر می گرداند.
int searchFindIndex = Array.FindIndex(persons, p => p.StartsWith("s"));
جستجو در آرایه با استفاده از متد FindLastIndex
این متد همانند FindIndex عمل می کند با این تفاوت که Index آخرین عنصر یافت شده را بر می گرداند.
int searchFindLastIndex = Array.FindLastIndex(persons, p => p.StartsWith("s"));
نمايش عناصر آرايه در #C
با استفاده از Index به عناصر داخل یک آرایه دسترسی داریم. این کار با قرار دادن شماره Index در داخل علامت [ ] قابل اجرا است.
double salary = balance[9];
در مثال زیر یک ارایه با تعداد 10 عنصر ایجاد می کنیم و با یک حلقه مقادیری در عناصر آرایه قرار می دهیم سپس با یک حلقه دیگر دسترسی و نمایش عناصر ارایه را انجام می دهیم.
int[] n = new int[10]; /* تعریف یک ارایه عددی با اندازه 10 عنصر */
int i, j;
/* مقدار دهی عناصر ارایه */
for (i = 0; i < 10; i++)
{
n[i] = i + 100;
}
/* نمایش عناصر ارایه*/
for (j = 0; j < 10; j++)
{
Console.WriteLine("Element[{0}] = {1}", j, n[j]);
}
Console.ReadKey();
استفاده از حلقه foreach برای آرایه
در مثال قبلی از حلقه for برای دسترسی به عناصر آرایه استفاده کردیم. در این مثال از حلقه foreach برای دسترسی به عناصر آرایه استفاده می کنیم.
int[] n = new int[10]; /* تعریف یک ارایه عددی با اندازه 10 عنصر */
int i ;
/* مقدار دهی عناصر ارایه */
for (i = 0; i < 10; i++)
{
n[i] = i + 100;
}
/* نمایش عناصر ارایه*/
foreach (int j in n)
{
i = j - 100;
Console.WriteLine("Element[{0}] = {1}", i, j);
}
Console.ReadKey();
اگر با مفهوم حلقه ها در سی شارپ آشنا نیستین در مقاله حلقه foreach در زبان سی شارپ در سایت باگتو بصورت مفصل به آموزش حلقه foreach پرداختیم.
برای افزودن دیدگاه خود، نیاز است ابتدا وارد حساب کاربریتان شوید