آرايه ها در سي شارپ - Arrays in CSharp
مسلما به مانند بيشتر زبان هاي برنامه نويسي استفاده از آرايه ها در سي شارپ نيز مرسوم است. استفاده از آرايه ها براي نگهداري چندين مقدار از يك نوع داده اي استفاده مي شود.
آرايه ها را مي توان از يك ديدگاه به سه دسته تقسيم كرد:
1. آرايه هاي تك بعدي - Simple Arrays
2. آرايه هاي مستطيلي - Rectangular Arrays
3. آرايه هاي نامنتظم - Jagged Arrays
براي تعريف يك آرايه تك بعدي در سي شارپ مي توانيد از Syntax زير استفاده كنين:
[code]
numbers = new int[3];
numbers[0] = 100;
numbers[1] =400;
numbers[2] = 500;
[code]
همانطور كه مي بينين در كد بالا من يك آرايه از اعداد ايجاد كردم كه داراي سه خانه مي باشد. براي دسترسي به هر كدام از خانه هاي اين آرايه بعد از نام متغييرم از [] استفاده مي كنم و بين اين دو علامت از يك عدد (indexer) كه از صفر تا n مي باشد. دقت كنين كه هميشه n يكي كمتر از طول آرايه شماست.
البته به غير از كدي كه بالا نوشته شده است من مي توانم از هر يك از روش هاي زير نيز براي ايجاد آرايه هاي استفاده كنم:
کد:
int[] numbers = new int[]{100,400,500};
در روش بالا بدون ذكر طول آرايه با مقدار دهي مستقيم آن به وسيله مقاديري كه بين دو علامت {} قرار مي گيرند طول آن را مشخص مي نمائيم.
اين هم يك نمونه ديگر از ايجاد آرايه ها:
کد:
int numbers = {100,400,500};
نكته قابل تامل در مورد آرايه ها اين است كه اين نوع هاي داده اي در دسته Reference Type ها قرار مي گيرند و اصولا مقادير آن ها در حافظه Heap نگهداري مي شود:
حالا اگر من يك آرايه از يك كلاس مثلا Person داشته باشم به نظر شما شكل حافظه اين آرايه من چگونه خواهد بود؟ به كد زير دقت كنين و سعي كنين كه شكل حافظه آن را رسم نمائيد:
کد:
Person[] personList = new Person[3];
دقت كنين كه
حتما تمامي خانه هاي اين آرايه من بايد قبل از اينكه مورد استفاده بگيرند مقدار دهي شوند:
کد:
personList[0] = new Person("Ali",24);personList[1] = new Person("Reza",35);personList[2] = new Person("John",44);
كه در نتيجه خطوط با شكل حافظه ما به اين ترتيب خواهد بود:
نكته بسيار مهم ديگر اين است كه ساختار آرايه ها به نحوي است كه طول آن ها ثابت مي باشد و در صورتيكه شما بخواهيد طول آن را تغيير دهيد مثلا از 3 خانه به 5 خانه ارتقاء دهيد بايد يكبار ديگر آن را new كنيد و در نتيجه اين new كردن شما اطلاعات قبلي خود را از دست خواهيد داد.
کد:
personList = new Person[5];
و نتيجه كد بالا اين شكل خواهد شد:
پس دقت داشته باشيد كه در صورتيكه مي خواهيد طول يك آرايه را بيشتر كنين حتما ابتدا يك آرايه جديد ساخته و طول آن را بيشتر در نظر بگيريد و سپس مقادير آرايه قبلي را در آرايه جديد كپي كنين.
ساختار foreach در سي شارپ
شما مي توانيد با استفاده از ساختار foreach در سي شارپ اطلاعات موجود در آرايه هاي خود را خوانده و از آن ها استفاده كنين. در حقيقت foreach يك نوع حلقه است كه بر روي آرايه ها شما انجام مي شود و تعداد دفعات انجام آن برابر است با طول حلقه شما و در هر با حركت يكي از خانه هاي آرايه شما را در اختيارتان قرار مي دهد. از Syntax زير براي ايجاد حلقه foreach استفاده مي نمائيم:
کد:
int[] myNums = new int[4];myNums[0] = 10;myNums[1] = 320;myNums[2] = 150;myNums[3] = 510;
و براي نمايش اطلاعات داخل اين آرايه:
کد:
foreach(int num in myNums)Console.WriteLine(num);
! دقت داشته باشين كه در ساختار foreach شما اجازه تغيير آرايه خود را به هر نحوي نداريد و اگر اين عمل را انجام دهيد به runtime error برخورد خواهيد كرد.
آرايه هاي مستطيلي در سي شارپ - Rectangular Arrays in CSharp
براي ايجاد يك آرايه مستطيلي از Syntax زير استفاده كنين:
کد:
int[,] myMatrix = new int[10,10];
با توجه به كد بالا شما داراي يك ماتريكس 10 در 10 هستيد و براي استفاده از هر خانه از اين آرايه به index هاي x , y آن احتياج دارين:
کد:
myMatrix[0,0] = 0;myMatrix[0,1] = 100;
و ....
آرايه هاي نامنتظم - Jagged Arrays
اين آرايه ها را مي توان با استفاده از كد زير توليد كرد:
کد:
int[][] jaggedArray = new int[3][];
دقت داشته باشين كه در خط اول فقط طول يك بعد از آرايه را مشخص كرديم ==> 3
کد:
jaggedArray[0] = new int[3];jaggedArray[1] = new int[2];jaggedArray[2] = new int[4];
و در نتيجه اين خطوط شما يك آرايه به مانند تصوير زير خواهيد داشت:
استفاده از ArrayList در سي شارپ - ArrayList in Csharp
به خاطر ساختار آرايه ها در سي شارپ وقتي شما نياز به آرايه اي دارين كه طول آن نا مشخص است مي توانين از يك كلاس به نام ArrayList كه در namespaceي به نام System.Collection قرار دارد استفاده كنين.
کد:
ArrayList arList = new ArrayList();arList.Add(10);arList.Add(20);arList.A dd(40);foreach(int i in arList)Console.WriteLine(i);
ساختار ArrayList به نحوي است كه با شروع استفاده از آن يك طول مشخصي (مثلا 4) را براي خود اختصاص مي دهد. سپس وقتي شما 2 تا از اين خانه ها را با استفاده از متد Add پر كنين , طول آرايه داخلي خود را به دو برابر افزايش مي دهد و مقادير قبلي را داخل آرايه جديدش كپي ميكند و اين عمل را به صورت تصاعدي ادامه مي دهد كه در نتيجه اين عمل هم سرعت و كارايي خوبي دارد و هم طولش قابل تغيير است
علاقه مندی ها (بوک مارک ها)