با عرض سلام و احترام.
پیشاپیش از شما دوست عزیز و گرامی، بابت وقتی که برای مطالعه ی این مطلب خواهید گذاشت، سپاسگزارم.
تقاضا دارم، در صورت مشاهده ی اشتباه متنی یا محتوایی، به اینجانب اطلاع دهید تا (ضمن کمک به یادگیری بنده) در اسرع وقت برای اصلاح متن اقدام نمایم.
شماره ی تماس:
09215149218
نشانی پست الکترونیکی:
RezaQadimi.ir@Gmail.com
آدرس کدها:
Learning-CSharp-Fundamental
آدرس سایت ها:
https://Reza-Qadimi.ir - https://WannaDate.ir
آرایه نوع داده ای ست که میتواند مقادیری را به صورت دنباله ای در خودش ذخیره کند. در واقع ما از آرایه برای تعریف یک لیست، با نوع مشخصی از داده (string, int, bool و...)، و با تعداد مشخصی متغیر (آیتم/خانه) استفاده می کنیم.
۱. آرایه در دسته ی متغیرهای Reference Type قرار می گیرد.
۲. ما برای این که بتوانیم با متغیرهای Reference Type کار کنیم (به غیر از string ها)، دو راه پیش رو داریم:
۳. در زبان های C Base، همه ی آرایه ها و collection ها zero based هستن (اندیس اولین آیتم آن ها از 0 شروع می شود).
۴. آرایه ها وقتی new شوند، دیگر قابل resize شدن نیستند (از دلایلی که باعث می شود، کم تر از آرایه ها استفاده نماییم).
نکته: هر چند نمی توانیم بعد از خلق آرایه طول آن را تغییر دهیم، اما می توانیم در زمان خلق، تعداد آیتم های آن را به صورت پارامتریک مشخص نماییم.
همانطور که قبلا عرض کردم، متغیرهایی که در stack قرار می گیرند (یا allocate می شوند)، مطلقا مقدار اولیه ندارند (یعنی حتی نباید بگوییم که null هستند)، و برعکس، همه ی متغیرهایی که در Heap قرار می گیرند، اتفاقا مقدار اولیه ی مشخص دارند!
نکته: بهتر است، نام آرایه را به صورت جمع تعریف کنیم تا خوانایی کدهای مان را بالاتر ببریم. مثال:
people, users, names, countries, ...
برای تعریف آرایه، راه های مختلفی داریم.
variableType[] arrayName = new variableType[itemsCount]; arrayName[index] = value;
نام آرایه
تعداد اعضا (آیتم یا خانه هایی) که می خواهیم آرایه مان داشته باشد.
اندیس آیتمی که میخواهیم به آن مقداردهی کنیم، یا مقدار آن را بخوانیم.
مقداری که به عنوان value آن خانه (خانه ای با اندیس index) از آرایه، در نظر داریم.
نوع متغیری که قصد داریم، آرایه ای از آن جنس داشته باشیم (string, int, bool, etc).
string[] usernames = new string[1]; usernames[0] = "RezaQadimi.ir" ;
نکته: می توانیم از حلقه ها، برای مقداردهی به آرایه مان استفاده نماییم:
string[] usernames = new string[5]; for (int index = 0; index < 5; index++) { string username = System.Console.ReadLine(); usernames[index] = username; }
string[] usernames = new string[5] { "Reza", "Ali", "Pouria", "Hamid", "Morteza" };
پی نوشت: در صورتی که از این روش استفاده می نمایید، باید حتما به اندازه ی عددی که به عنوان تعداد خانه های آرایه تان مشخص نموده اید، "در همان لحظه" به آرایه تان مقداردهی نمایید! در غیر این صورت با Compile Error مواجه خواهید شد.
string[] usernames = { "Reza", "Ali", "Pouria", "Hamid", "Morteza" };
int[] numbers; numbers[2] = 1995;
پی نوشت: برای کار کردن با موجودات Reference Type، یا باید آن ها را new کرد، یا...
int[] numbers; numbers = new int[5]; numbers[2] = 1995;
int[] numbers; numbers = new int[5]; numbers[5] = 1995;
پی نوشت: اندیس اولین خانه/آیتم آرایه ها در زبان های C Base، از 0 شروع می شود. بنابراین اندیس آخرین خانه از یک آرایه، برابر است با تعداد خانه های مشخص شده برای آن آرایه، منهای یک!
int[] numbers = new int[5]; numbers[0] = 10; numbers[1] = 20; numbers[2] = 3; numbers[3] = 15; numbers[4] = 1060;
int[] numbers = { 10, 20, 3, 15, 1060 };
در آرایه های دو بعدی، هم می توانیم تعداد ستون ها را مشخص نماییم، و هم تعداد ردیف ها را.
نکته: از آرایه های دو بعدی، بیشتر برای ترسیم اشکال و مشخص کردن موقعیت روی نقشه استفاده می کنیم.
| 1 2 | → row
| 3 4 |
↓
column
int[,] numbers = new int[2, 2]; numbers[0, 0] = 1; numbers[0, 1] = 2; numbers[1, 0] = 3; numbers[1, 1] = 4;
int[,] numbers = new int[,] { { 1, 2 }, { 3, 4 } };
int[,] numbers = { { 1, 2 }, { 3, 4 } };
int row = System.Convert.ToInt32(System.Console.ReadLine()); int column = System.Convert.ToInt32(System.Console.ReadLine()); int[,] numbers = new int [row, column]; for (int rowIndex = 0; rowIndex <= row - 1; rowIndex++) { for (int columnIndex = 0; columnIndex <= column - 1; columnIndex ++) { int input = System.Convert.ToInt32(System.Console.ReadLine()); numbers[rowIndex, columnIndex ] = input; } }
علاوه بر حلقه هایی که در مقاله ی قبل بررسی کردیم، حلقه ی دیگری داریم به نام foreach.
foreach ([Data Type] [Variable Name] in [Array/Collection Name]) { // Statement(s) }
نوع متغیری، که قرار است آرایه ای از آن جنس را مورد بررسی/پیمایش قرار دهیم.
اصطلاحا نامیست که به آیتم کنونی آرایه می دهیم و می خواهیم آن را مورد بررسی قرار دهیم (نام آن مهم نیست، و می تواند هر چیزی باشد (با رعایت نکات syntax ی سی شارپ)، اما معمولا از کلمات General مثل item استفاده می نماییم تا هزینه ی تغییرات بعدی، یا copy-paste را کمتر کنیم).
نام آرایه (یا کالکشنی) که قرار است آیتم های آن را مورد بررسی قرار دهیم.
مثال:
string[] usernames = { "Reza", "Ali", "Pouria", "Hamid", "Morteza" }; foreach (string item in usernames) { System.Console.WriteLine(item); } System.Console.ReadLine();
پی نوشت: زمانی که صرفا قصد پیمایش یا خواندن خانه های یک آرایه را داریم، استفاده از حلقه ی foreach، حرفه ای تر، و شیک تر است.
چند سوال:
- آیا می توانیم از انتهای آرایه، به ابتدای آرایه بیایم؟
- آیا می توانیم value خانه های آرایه را کم یا زیاد کنیم؟
- آیا می توانیم از ابتدا به انتهای آرایه، خانه های آرایه را یکی در میان، یا... مقداردهی کنیم یا پیمایش نماییم؟
خواندن این مقاله از استاد داریوش تصدیقی توصیه می شود:
آموزش #C مقدماتی - آموزش ArrayList
پی نوشت: در مقاله ی بعد، به آشنایی با متدها در زبان سی شارپ می پردازیم.
معرفی:
رضا قدیمی هستم. برنامه نویس و دانش آموزِ حوزه ی وب، بسیار مشتاق در یادگیری مفاهیم و اطلاعات جدید در این حوزه.