آموزش آرایه ها در سی شارپ

Ratings
(0)

 

همه ی نوع داده هایی که تا حالا مشاهده کرده اید، در یک چیز اشتراک دارند: هریک از آنها یک مقدار تکی را ذخیره می کنند(یا یک مجموعه ی تکی از مقادیر در ساختارها). گاهی اوقات، در موقعیت هایی که می خواهیم داده های زیادی را ذخیره کنیم، این کار خیلی راحت نیست. ممکن است بخواهیم چندین مقدار از یک نوع را در یک زمان، بدون استفاده از متغیرهای مختلف برای هر مقدار، ذخیره کنیم. بعنوان مثال، فرض کنید می خواهیم پردازشی انجام دهیم که شامل نام های تمام دوستان شما باشد. برای انجام این کار می توانیم از متغیرهای رشته ای(string) ساده، به صورت زیر استفاده کنیم:

string friendName1 = "Todd Anthony";
string friendName2 = "Kevin Holton";
string friendName3 = "Shane Laigle";

اما این کار نیاز به تلاش زیادی دارد، به خصوص چونکه نیاز داریم برای پردازش هر متغیر، کد متفاوتی بنویسیم. بعنوان مثال، ما نمی توانیم تکرار از بین این لیست از رشته ها را در یک حلقه انجام دهیم. جایگزین این کار، استفاده از یک آرایه است. آرایه ها، لیست هایی از متغیرها هستند که در یک متغیر، از نوع آرایه ذخیره شده اند. بعنوان مثال، فرص کنید یک آرایه به نام friendNames داشته باشیم که سه نام را که در متغیرهای رشته ای بالا آورده شده اند، در خود ذخیره کند. برای دسترسی به یکی از اعضای این آرایه، باید اندیس آن را در بین براکت ها قرار دهیم، مانند زیر:

friendNames[اندیس]

این اندیس یک عدد صحیح(ineger) است که از 0 شروع می شود، یعنی اندیس عنصر اول، 0 است و اندیس عنصر دوم 1 است و همین طور الی آخر. این یعنی با استفاده از یک حلقه مانند زیر، می توانیم به عناصر آن دسترسی داشته باشیم:

int i;
for (i = 0; i < 3; i++)
{
  WriteLine($"Name with index of {i}: {friendNames[i]}");
}

عناصر یک آرایه همه باید از یک نوع(type) باشند. مثلا نوع عناصر آرایه ی friendNames رشته یا همان string  است؛ به هریک از عضوی های یک آرایه، عنصر(element) گفته می شود. 


تعریف آرایه ها در سی شارپ

آرایه ها در زبان برنامه نویسی سی شارپ، به صورت زیر تعریف می شوند:

نام []نوع;

در اینجا، به جای "نوع" می توانیم هر نوعِ متغیری را قرار دهیم، که شامل enumها و structها که قبلا در این فصل با آنها کار کردیم می شود. آرایه ها، قبل از اینکه بتوانیم به آنها دسترسی پیدا کنیم، باید مقداردهی اولیه(initialize) شده باشند. برای دسترسی یا انتساب مقادیر به عناصر آرایه به صورت زیر عمل کنید:

int[] myIntArray;
myIntArray[10] = 5;

آرایه ها می توانند به دو روش مقدار دهی اولیه شوند. ما می توانیم محتوای کامل آرایه را به شکلی دقیق مشخص کنیم، یا می توانیم سایز آرایه را مشخص کنیم و با استفاده از کلمه ی کلیدی new، تمام عناصر آن را مقداردهی اولیه کنیم. مشخص کردن یک آرایه با استفاده از مقادیر دقیق(literal)، شامل این می شود که یک لیست از مقادیر عناصر که اعضای آن با کاما، جدا شده اند، را در داخل آکولادها به آن ارائه دهیم:

int[] myIntArray = { 5, 9, 10, 2, 99 };

در بالا، آرایه ی myIntArray پنج عنصر دارد، که به هرکدام یک عدد صحیح(integer) بعنوان مقدار داده شده است. 


اما روش دوم تعریف آرایه، به شیوه ی نوشتاری(سینتکس) زیر نیاز دارد:

int[] myIntArray = new int[5];

در اینجا، ما از کلمه ی کلیدی new برای مقداردهی اولیه ی صریح این آرایه استفاده می کنیم، و از یک مقدار ثابت نیز برای تعریف سایز استفاده می کنیم. این روش منجر می شود که به تمام اعضای آرایه، یک مقدار پیش فرض، که برای مقادیر عددی 0 است، اختصاص داده شود. 

ما همچنین می توانیم از متغیرهای غیر ثابت، برای این مقدار دهی اولیه استفاده کنیم:

int[] myIntArray = new int[arraySize];

علاوه بر این، ما می توانیم این دو روش مقداردهی اولیه را، اگر بخواهیم با یکدیگر ترکیب کنیم: 

int[] myIntArray = new int[5] { 5, 9, 10, 2, 99 };

با این روش، سایزها باید با یکدیگر تطابق داشته باشند. بعنوان مثال نمی توانیم به صورت زیر عمل کنیم:

int[] myIntArray = new int[10] { 5, 9, 10, 2, 99 };

در اینجا، تعریف شده که آرایه 10 عضو دارد، اما تنها 5 عضو برای آن قرار داده ایم، بنابراین فرآیند کامپایل با شکست مواجه می شود. یک عوارض جانبی این کار، این است که اگر سایز را با استفاده از یک متغیر تعریف کنیم، آنگاه آن متغیر باید یک ثابت(constant) باشد:

const int arraySize = 5;
int[] myIntArray = new int[arraySize] { 5, 9, 10, 2, 99 };

اگر کلمه ی کلیدی const را از قلم بیندازیم، این کد با شکست مواجه می شود. مانند دیگر نوع های متغیر، نیازی به مقداردهی اولیه ی یک آرایه در همان خطی که آن را تعریف کرده ایم، نیست. کد زیر کاملاً قانونی است:

int[] myIntArray;
myIntArray = new int[5];

در خودتان امتحان کنید زیر، با استفاده از مثالی که در مقدمه ی این بخش زدیم، یک آرایه ی از رشته ها(string) را ایجاد و استفاده می کنیم:


خوتان امتحان کنید، Ch05Ex04\Program.cs

1. یک اپلیکیشن کنسول جدید به نام Ch05Ex04 ایجاد کنید و آن را در آدرس زیر  ذخیره کنید:

C:\BeginningCSharp7\Chapter05

 2. کد زیر را در فایل Program.cs وارد کنید:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;

namespace Ch05Ex04
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] friendNames = { "Todd Anthony", "Kevin Holton", "Shane Laigle" };
            int i;
            WriteLine($"Here are {friendNames.Length} of my friends:");

            //for (i = 0; i <= friendNames.Length; i++)
            for (i = 0; i < friendNames.Length; i++)
            {
                WriteLine(friendNames[i]);
            }
            ReadKey();
        }
    }
}

3. کدها را اجرا کنید. نتیجه در تصویر 5.8 نشان داده شده است:

(تصویر 5.8)

نتیجه آموزش سی شارپ این کد چگونه کار می کند

این کد یک آرایه ی رشته ای(string) با سه مقدار را تعریف می کند و آنها را با استفاده از یک حلقه ی for، در کنسول لیست می کند. توجه کنید که ما با استفاده از دستور friendNames.Length به تعداد عناصر در این آرایه دسترسی داریم:

WriteLine($"Here are {friendNames.Length} of my friends:");

این یک راه مفید، برای به دست آوردن سایز یک آرایه است. در خروجی نشان دادن مقادیر در یک حلقه ی for، ممکن است باعث ایجاد اشتباه شود. بعنوان مثال، سعی کنید در کدها، به جای < یک <= قرار دهید:

for (i = 0; i <= friendNames.Length; i++)
{
  WriteLine(friendNames[i]);
}

حالا اگر کدها را کامپایل و اجرا کنیم، منجر به نتیجه ی نشان داده شده در تصویر 5.9 می شود. در اینجا، کد تلاش کرده است تا به friendNames[3] دسترسی پیدا کند. به یاد بیاورید که در آرایه ها، اندیس ها از 0 شروع می شوند، بنابراین آخرین عنصر با استفاده از دستور friendNames[2] به دست می آید. اگر سعی کنید به عناصر بیرون از سایز آرایه دسترسی پیدا کنید، کدها با شکست مواجه می شوند. 

اما یک روش انعطاف‌پذیرتر برای دسترسی به همه اعضای یک آرایه وجود دارد: استفاده از حلقه‌های foreach.

(تصویر 5.9)

 

 

  • بازدید: 98

نوشتن دیدگاه

لطفا نظرات خود را بیان کنید. به سوالات در سریع ترین زمان پاسخ داده خواهد شد.اما به نکات زیر توجه کنید:
1. سعی کنید نظرات شما مرتبط با مقاله ی مورد نظر باشد، در غیر این صورت پاسخ داده نخواهد شد.
2. سوالات خود را به صورت کوتاه بیان کنید و از پرسیدن چند سوال به طور همزمان خودداری کنید.
3. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.

ارسال