معرفی و آشنایی با انواع آرایه ها در سی شارپ

Array ها در سی شارپ

بدون دیدگاه

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

آرایه ها در سی شارپ یکی از متداول ترین ساختارهای داده می‌باشد. وقتی می خواهید بیش از یک مقدار از نوعی مشخص را در حافظه نگدارید، می‌توانید از آرایه استفاده کنید. در این صورت با یک نام می‌توانید به تمامی مقادیر دسترسی داشته باشد. آرایه ها در سی شارپ دنباله ای از مقادیر همنوع می‌باشند. این مقادیر فضاهای متوالی حافظه را به خود اختصاص می‌دهند. تعداد عناصر موجود در آرایه حین نمونه سازی مشخص می‌شوند. اندازه آرایه پس از نمونه سازی ثابت بوده و قابل تغییر نمی‌باشد. دسترسی به عناصر آرایه از طریق Index امکانپذیر می‌باشد. Index در سی شارپ Zero Based است و از صفر شروع می‌شود. روش تعریف آرایه به شکل زیر است.

int [ ] numbers;
numbers = new int [ ۶ ];
//or
numbers = new int [ ] { ۱, -۲, ۴۳, ۰, ۳۳, ۱۹ };

دسترسی به عناصر آرایه با استفاده از Index به شکل زیر انجام می‌شود.

numbers [ 0 ] = 10;
numbers [ 1 ] = -5;

چرا index از صفر شروع می‌شود؟

برای درک بهتر ایندکس و اینکه چرا zero based است، به این مثال توجه کنید. فرض کنید آرایه ای با ۶ عنصر از نوع int در حافظه تعریف کرده ایم. مشخص است که هر سلول از آرایه، از آدرس مشخصی شروع می‌شود. و باز هم واضح است که نام آرایه، به کل فضای اشغال شده اشاره می‌کند. عملا نام آرایه، مشخص کننده نقطه شروع آرایه در حافظه است. به تصویر زیر توجه کنید:

آشنایی با اندیس در آرایه ها و ساختار حافظه آرایه - ناب آموز

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

شماره سلول آرایه

آدرس شروع در حافظه

۱

numbers

۲

numbers + sizeof ( int )

۳

numbers + ( 2 * sizeof ( int ) )

۴

numbers + ( 3 * sizeof ( int ) )

۵

numbers + ( 4 * sizeof ( int ) )

۶

numbers + ( 5 * sizeof ( int ) )

همین جدول را کمی اصلاح می‌کنیم، تا به قالبی مشخص در آدرس های شروع در حافظه برسیم

شماره سلول آرایه

آدرس شروع در حافظه

۱

numbers + ( ۰ * sizeof ( int ) )

۲

numbers + ( ۱ * sizeof ( int ) )

۳

numbers + ( ۲ * sizeof ( int ) )

۴

numbers + ( ۳ * sizeof ( int ) )

۵

numbers + ( ۴ * sizeof ( int ) )

۶

numbers + ( ۵ * sizeof ( int ) )

مقادیر ۰ تا ۵ index های مورد نظر هستند. و دلیل zero based بودن index ها با این مثال به سادگی قابل درک است.

انواع Array ها

آرایه ها از نوع Reference Type هستند و در Heap قرار می‌گیرند. تمام آرایه ها از کلاس System.Array که یک کلاس abstract است مشتق شده اند. از آنجا که بر روی System.Array دو interface خاص IEnumerable و IEnumerable پیاده سازی شده اند، تمامی آرایه ها را می‌توان با ساختار foreach مرور کرد.
آرایه ها در حالت کلی به سه دسته مختلف تقسیم می‌شوند:
آرایه ها در سی شارپ، آرایه های یک بعدی در سی شارپ

آرایه های یک بعدی یا Single Dimensional Array

این آرایه ها دارای یک بعد بوده و توالی یک سری مقادیر در حافظه هستند. دسترسی به عناصر آنها از طریق یک index انجام می شود. می‌توانید برای نمونه سازی آرایه از کلمه کلیدی new استفاده کرده و یا با استفاده از initializer با مقادیر مورد نظر آرایه را initialize کنید. به مثال زیر توجه کنید:

int [ ] numbers;
numbers = new int [ ۶ ];
//or
numbers = new int [ ] { ۱, -۲, ۴۳, ۰, ۳۳, ۱۹ };

numbers [ 0 ] = 10;
numbers [ 1 ] = -5;

آرایه ها در سی شارپ، آرایه دو بعدی در سی شارپ

آرایه های چند بعدی یا Multi-Dimensional Array

این آرایه ها مانند آرایه های یک بعدی هستند با این تفاوت که حداقل بعد دوم به آنها اضافه شده است. به عنوان مثال آرایه های دو بعدی را می‌توانید مانند ماتریس در نظر بگیرید. تصور کنید که هر سلول از طریق شماره سطر و ستون قابل دسترس باشد. همین حالت برای آرایه های دوبعدی قابل تصور است.

int [ , ] numbers;
numbers = new int [ ۴ , ۶ ];
//or
numbers = new int [ ]
{
       {۱, -۲, ۴۳, ۰, ۳۳, ۱۹ },           // numbers [ 0 , * ] elements
       {-۳, ۰, ۱۱, ۹, ۲۰, ۸۷ },           // numbers [ 1 , * ] elements
       {۰, ۱, ۰, -۱, ۲, ۵ },                 // numbers [ 2 , * ] elements
       {۴۸, ۹۴, ۱۵۰۰, -۱, ۰, ۸۵ }     // numbers [ 3 , * ] elements
};

numbers [ 0 , 0 ] = 580;
numbers [ 1 , 4 ] = -90;

به همین ترتیب آرایه ها می‌توانند دارای ابعاد بیشتری باشند. آرایه های سه بعدی را می‌توانید مکعب هایی در نظر بگیرید که در آنها با استفاده از سطر، ستون و ارتفاع به سلول ها دسترسی دارید. برای ابعاد بالاتر، تجسم ذهنی ساده به نظر نمی‌رسد. ولی قاعده کلی تعریف و دسترسی به مقادیر همچنان قابل تعمیم است. به تصویر زیر توجه کنید:

آرایه ها در سی شارپ، آرایه سه بعدی در سی شارپ

آرایه های نا منظم یا Jagged Array

این نوع از آرایه ها، آرایه هایی هستند که عناصرشان، خود آرایه هستند. از آنجا که هر آرایه می‌تواند اندازه ی خاص خودش را داشته باشد، این آرایه ها ساختاری نامنظم می‌توانند داشته باشند. به اصطلاح این آرایه ها شکلی دندانه دندانه خواهند داشت. به این نوع از آریه ها، آرایه ای از آرایه ها نیز می‌گویند.

int[ ] [ ] userInputs = new int [ ۳ ] [ ];
userInputs [ 0 ] = new int [ ۲ ];
userInputs [ 1 ] = new int [ ۵ ];
userInputs [ 2 ] = new int [ ۳ ];
//or
userInputs = new int [ ] [ ]
{
      new int [ ] {۲, ۳۲},
      new int [ ] {۱, ۰, ۱۸, ۶, ۸۵},
      new int [ ] {۶, ۲۵, ۵۹},
};

آرایه ها در سی شارپ، آرایه های نا منظم در سی شارپ - Jagged Array

شهاب ساری اصلانی

از سال 1385 به صورت جدی مشغول تدریس در حوزه های برنامه نویسی دات نت و طراحی بانک های اطلاعاتی بوده ام. تدریس به عنوان یک حرفه همیشه برایم جذاب بوده و یادگیری جدیدترین مباحث لذت بخش است.

ارسال یک دیدگاه

آدرس ایمیل شما منتشر نخواهد شد.