soheil moonesi
soheil moonesi
خواندن ۴ دقیقه·۹ ماه پیش

C# Array

حالا میرسیم به مبحث جذاب دیگه که اون هم array هستش ، حالا چرا جذاب ، چون به نظرم خیلی کاربردی هستن این array ها.

وقتی که میخواستم عنوان این متن رو بنویسیم یه لحظه به نظرم اومد که از تیتر های مدل جدید استفاده کنم مثل :

کی array منو جا به جا کرده ، array رو قورت بده ، 0 تا 100 آرایه های سی شارپ در زیر 1 دقیقه ولی در نهایت به همین عنوان بسنده کردم حالا شاید در عنوان های بعدی ازشون استفاده کنم.

خوب حالا بریم سره اصل مطلب:

این ها عنواع و اقسام array ها هستند که میایم هر کدوم رو بررسی میکنیم:

int[ ] array1=new int[5];

int[ ] array2 = new int[ ]{1,2,3,4,5}

int array3 = {1,2,3,4,5}

int[ , ] multiDimensionalArray1 = new int[2,3];

int [ , ] multiDimensionalArray2 = { {1,2,3}, {4,5,6} } ;

int [ ] [ ] jaggedArray = new int [6] [ ]

jaggedArray[0] = new int [4] {1,2,3,4};

خوب مورد اول یعنی این که یه آرایه داریم با 5 جایگاه از نوع int

مورد دوم همون مورد اوله ولی اومدیم موقع ساختنش مقدار داخل اون جایگاه رو ریختیم

مورد سوم یه مدل دیگه نوشتن همون مورد 2 هستش

حالا میرسیم به آرایه های دو بعدی ، اینجا میایم از عکس برای توضیحاتمون استفاده میکنیم:

آرایه ها دو بعدی:

int[,] arr2d = new int[3,2]{
{1, 2},
{3, 4},
{5, 6}
};

حالا این یعنی این که ما 3 تا سطر داریم 2 تا ستون : new int[3,2]

این عکس پایین هم برای درک بیشتر برای دسترسی به جایگاه هایی این آرایه :

آرایه های 3 بعدی:

int x[2][3][4] =
{
{ {0,1,2,3}, {4,5,6,7}, {8,9,10,11} },
{ {12,13,14,15}, {16,17,18,19}, {20,21,22,23} }
};

حالا برای اون دو مورد آخر میتونیم از این عکس استفاده کنیم:

jagged meaning : having a sharply uneven edge or surface

وقتی که جایگاه دوم در آرایه رو خالی میزاریم یعنی میتونه هر مقداری داشته باشه، به این معنی که اینجا چون بخش اول رو 4 گذاشتیم یعنی 4 تا سطر ثابت داریم ولی برای ستون میتونیم هر مقداری داشته باشیم.

نکته داریم چه نکته ای ، در حد بوندسلیگا :

خوب اول باید بدونیم که هر چیزی که آرایه باشه رو میتونیم بریزیم توی کلاس اصلیه آرایه ، حالا این یعنی چی؟

int[ ] i = {1,2,3}

array j = i

اینجا ما اومدیم یه آرایه ای رو که ساختیم رو ریختیم توی متغییری که تایپش خوده آرایه است.

خوب حالا به نظرتون این قضیه چه قابلیتی رو بهمون میده؟

به طور مثال فکر کنید که یک کلاس Circle دارید و میخواید بریزیدش داخل یک آرایه چی کار میکنید؟

خوب البته توی این حالت چند تا راه داریم که میایم با هم بررسیش میکنیم:

راه اول :

Circle[ ] circles={ circles[0] = new Circle(), circle[1]=new Circle()}

راه دوم:

Circle[ ] circles={ null, new Circle(), new Circle }

حالا یه جور دیگه :

Array j = circles;

j.SetValue(new Circle(), 0);

خوب حالا این خط بالا یعنی این که مقدار new Circle رو در اندیس صفرم آرایه j قرار بده.

حالا یه مثال دیگه :

Array arr = new int[5];

arr.SetValue(5,1);

int index1 = (int)arr.GetValue(1);

حالا اینجا چطوری شد؟

اینجا اول اومدیم یه آرایه ساختم با 5 تا عضو بعد اومدیم ریختیمش توی متغییر arr با تایپ Array که کلاس پایه هستش .

حالا setValue میاد در اینجا آرایه دوم رو 5 قرار میده .

توی خط بعدی میایم از getValue استفاده میکنیم و مقدار دوم آرایه رو میگیریم ولی چون به شکل آبجکت هستش میایم cast اش میکنیم به int و بعد وارد متغییر index1 میکنیم.

حالا یه قابلیت دیگه که آرایه ها دارن این هستش که میتونیم از Length برای این که ببینیم چه تعداد عضو داخل آرایه هستش استفاده کنیم.

قابلیت بعدی sort هستش که به صورت A-Z هستش. به این شکل :

Array.Sort(arr);

برای برعکس کردن sort میتونیم از reverse استفاده کنیم :

Array.Reverse(arr);

نمونه مثال برای reverse کردن:

int[] arr = new int[] { 10, 12, 30, 144, 85 }; int[] rev = new int[arr.Length]; int j = arr.Length; for(int i = 0; i < arr.Length; j--,i++) { rev[i] = arr[j-1]; } return rev;

نمونه برای merge کردن 2 تا آرایه:

int[] arr1 = new int[] { 10, 12, 30, 144, 85 }; int[] arr2 = new int[] { 1, 2, 3, 4, 5 }; int[] res = new int[arr1.Length + arr2.Length]; int index = 0; for (index = 0; index < arr1.Length; index++) { res[index] = arr1[index]; } for (int j = 0; j < arr2.Length; j++, index++) { res[index] = arr2[j]; } return res;


با تشکر از استادم آقای عمران صادقی برای تدریس عالی که داشتن.

منابع عکس ها : سایت و سایت

new intسی شارپarraynew circleint int
C# enthusiast
شاید از این پست‌ها خوشتان بیاید