آرایه ها در سی شارپ: هر آنچه باید بدانید
آرایه ها در سی شارپ: هر آنچه باید بدانید

آرایه ها گروهی از متغیر ها است که با یک اسم در حافظه ذخیره شده اند. گاهی اوقات ما در برنامه نویسی پروژه ها مجبوریم تعداد زیادی از اطلاعات را در متغیری ذخیره کنیم، به عنوان مثال ممکن است نیاز داشته باشیم 1000 تا عدد مختلف را در حافظه ذخیره و با آنها کار کنیم، اینجاست که متوجه می شویم ایجاد 1000 تا متغیر کار عقلانی نیست و  باید از ابزار مناسب تری برای این کار استفاده کنیم. از آرایه در سی شارپ و هر زبان برنامه نویسی دیگه ای در این موارد می توانیم استفاده کنیم.
 برای یادگیری زبان برنامه نویسی سی شارپ سایت باگتو به شما کمک میکند که آموزش سی شارپ(#C) را از سطوح پایه آموزش ببینید و در دوره آموزش سی شارپ پیشرفته به بالاترین سطح از دانش سی شارپ دست خواهید یافت.

آرایه مقداری از حافظه را که در اختیار دارد به خانه های که تعداد آن را ما مشخص می کنیم تقسیم می کند و مقادیر را در این خانه ها ذخیره می کند. که به هر مورد از این خانه ها عنصر آرایه گفته می شود. نوع آرایه در سی شارپ می تواند انواع داده معتبر  مانند float , int , char , string ,long , و غیره باشد.

 

نکاتی مهم آرایه ها در سی شارپ

  • آرایه ها در سی شارپ داینامیک هستند

این یعنی ما در طول اجرای  برنامه می توانیم داده ها را ویرایش  یا حذف کنیم.ارایه ها از نوع ایستا این قابلیت رو ندارند.

  • آرایه ها اشیاء سی شارپ هستند می توانیم طول آنها را با استفاده از length بدست بیاوریم

  • آرایه ها را می توانیم در زمان ایجاد با [] مقدار دهی اولیه بکنیم.

  • آرایه ها در سی شارپ مرتب شده هستند و هرکدام دارای یک شماره index است که از 0 شروع می شود

  • آرایه ها در سی شارپ یک شئ از نوع system.array هستند.

  • مقادیر پیش فرض برای آرایه های از نوع عددی مانند int , long مقدار 0 می باشد و برای آرایه های غیر عددی مقدار null به عنوان پیشفرض ذخیره می شود

  • عناصر آرایه می توانند از هر نوعی باشند

  • آرایه ها را می توانیم با حلقه های for و foreach پیمایش کنیم.

  • زبان سی شارپ از آرایه های چند بعدی پشتیبانی می کند

  • استفاده از کلاس array برای آرایه ها در سی شارپ

این کلاس پایه برای همه آرایه ها استفاده می شود و ویژگی ها و روش های مختلفی را برای کار با آرایه ها ارائه می دهد.
 

کلاس 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 پرداختیم.

تگ‌ها
اشتراک
0 نظرات

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