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

به مجموعه ای از سلولهای همجوار و هم نوع در حافظه، آرایه گفته می شود. هنگامی که قصد داشته باشید تعدادی زیادی متغیر در برنامه استفاده کنید به جای مثلا تعریف 10 متغیر می توانید آرایه ای با 10 خانه داشته باشید. در سی شارپ اندیس آرایه ها از صفر شروع شده و طول آرایه ها ثابت می باشد. برای مثال هنگامی که آرایه ای با طول 10 تعریف می نمایید امکان تغییر آن به 11 خانه وجود نخواهد داشت.

نحوه استفاده

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

int[] numbers = new int[5];

در مثال فوق آرایه ای از نوع int و دارای 5 خانه تعریف شده است. دسترسی به عناصر آرایه از طریق index (اندیس) امکان پذیر است. اندیس آرایه ها از صفر شروع شده و اندیس آخرین خانه یک واحد کمتر از تعداد عناصر می باشد. برای مثال در دستور فوق آرایه ای با 5 خانه تعریف شده است که اندیس اولین خانه 0 و اندیس آخرین خانه 4 می باشد. برای مقدار دهی عناصر آرایه به شکل زیر عمل می شود.

int[] numbers = new int[5];
numbers[0] = 4;
numbers[1] = 8;
numbers[2] = 15;
numbers[3] = 9;
numbers[4] = 12;

جهت استفاده و نمایش اطلاعات درون آرایه نیز می بایست از اندیس آن استفاده نمود.

Console.WriteLine(numbers[3]);

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

System.IndexOutOfRangeException: 'Index was outside the bounds of the array.'

مثال: برنامه ای بنویسید که 5 عدد را از کاربر دریافت کرده، آنها را درون آرایه ذخیره کند و در نهایت محتوای آرایه را نمایش دهد.

تحلیل: برای پیمایش آرایه از حلقه for استفاده می شود. بنابراین برای حل این تمرین می توان حلقه ای با 5 بار تکرار ایجاد نمود.

static void Main(string[] args)
{
    int[] numbers = new int[5];
            
    //پر کردن آرایه
    for (int i = 0; i < 5; i++)
    {
        Console.Write("Please enter a number: ");
        numbers[i] = int.Parse(Console.ReadLine());
    }

    //نمایش اطلاعات
    for (int i = 0; i < 5; i++)
    {
        Console.Write(numbers[i] + ", ");
    }
    Console.ReadLine();
}

در تمرین فوق از دو حلقه متفاوت، یکی برای پر کردن آرایه و دیگری برای نمایش اطلاعات درون آن استفاده شده است.

تمرین: برنامه ای بنویسید که 5 عدد را از کاربر دریافت کرده و درون آرایه ذخیره کند، سپس حاصل جمع اعداد درون آرایه را محاسبه نماید.

static void Main(string[] args)
{
    int[] numbers = new int[5];
    int sum = 0;
    //پرکردن آرایه
    for (int i = 0; i < 5; i++)
    {
        Console.Write("Please enter a number: ");
        numbers[i] = int.Parse(Console.ReadLine());
    }

    // حاصل جمع اعداد درون آرایه
    for (int i = 0; i < 5; i++)
    {
        sum += numbers[i];
    }

    Console.WriteLine("Sum is: " + sum);
    Console.ReadLine();
}

نکته: در مثال فوق اگر به sum مقدار اولیه ندهید، با خطای زیر مواجه خواهید شد. زیرا متغیرها در سی شارپ قبل از استفاده باید حتما مقدار داشته باشند.

Use of unassigned local variable 'sum'

تمرین: برنامه ای بنویسید که 10 عدد از کاربر دریافت کرده و درون آرایه ذخیره کند. سپس عدد دیگری را دریافت کرده و درون آرایه جستجو کند، اگر بود پیغام Found و در غیر اینصورت پیغام Not found نمایش داده شود.

static void Main(string[] args)
{
    int[] numbers = new int[10];
    int search;
    string message = "Not found";
    //پرکردن آرایه
    for (int i = 0; i < 10; i++)
    {
        Console.Write("Please enter a number: ");
        numbers[i] = int.Parse(Console.ReadLine());
    }

    Console.Write("Please enter a number for search: ");
    search = int.Parse(Console.ReadLine());

    // جستجو درون آرایه
    for (int i = 0; i < 10; i++)
    {
        if(numbers[i] == search)
        {
            message = "Found";
            break;
        }
    }

    Console.WriteLine(message);
    Console.ReadLine();

}

در مثال فوق متغیری به نام message و با مقدار اولیه Not found تعریف شده است، در صورتی عدد وارد شده در آرایه وجود داشته باشد محتوای آن به Found تبدیل شده و از حلقه خارج می شود.

foreach

یکی دیگر از روش های پیمایش آرایه، استفاده از حلقه foreach به جای for می باشد که ساختار آن به شکل زیر می باشد.

foreach(var item in collection)
{

}

collection یک مجموعه ای از عناصر می باشد و در هر مرحله item به یکی از این عناصر اشاره می نماید.

مثال: برنامه ای بنویسید که 5 نام را از کاربر دریافت کرده و درون آرایه ذخیره کند، سپس محتوای آرایه را با استفاده از حلقه foreach نمایش دهد.

static void Main(string[] args)
{
    string[] names = new string[5];
    for (int i = 0; i < 5; i++)
    {
        Console.Write("Enter a name:");
        names[i] = Console.ReadLine();
    }

    //نمایش محتوای آرایه
    foreach (var item in names)
    {
        Console.WriteLine(item);
    }
    Console.ReadLine();
}