PDA

View Full Version : مقدمه ای بر سی شارپ : قسمت- 10



Vahid_Nasiri
چهارشنبه 22 مرداد 1382, 01:00 صبح
مبحث overloading :

گاهی از اوقات لازم است تا نگارش های مختلفی از یک تابع داشته باشیم. برای مثال تعریف سه تابع با یک نام اما با آرگومانهای مختلف. به این نوع توابع و یا متدها اصطلاحا Overloaded Methods می گویند . ( فکر کنم آنرا سربارگذاری توابع ترجمه کرده اند! ) برای مثال :


void myMethod(int p1);
void myMethod(int p1, int p2);
void myMethod(int p1, string s1);

مثال : یک برنامه ی سی شارپ جدید console را در VS.NET باز کنید و نام آنرا درابتدا ex18 انتخاب نمایید. سپس کد زیر را درون آن بنویسید :



using System;

namespace ex18
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
writeIT();

writeIT(12);

Console.ReadLine();
}

public static void writeIT()
{
Console.WriteLine(" writeIT() Ver." );
}

public static void writeIT(int intI)
{
Console.WriteLine(" writeIT(intI) Ver. = " + intI );
}


}
}


توضیحاتی در مورد کد فوق :

1- نحوه ی تعریف دو تابع با یک نام را ملاحظه می نمایید. اینکار در زبان سی ممنوع است!
2- کامپایلر به صورت هوشمند بر اساس نوع و تعداد آرگومانهای ورودی ، ورژن مناسب را انتخاب و اجرا می کند.

نمونه ی ضعیفی از این بحث در وی بی 6 به صورت تعریف توابعی با پارامترهای Optional وجود داشت .




مباحث تکمیلی آرایه ها (آرایه های چند بعدی):

آرایه های معمولی (یک بعدی) را می توان یک ردیف با تعدادی خانه خالی آماده ی پر شدن در نظر گرفت. آرایه ی دوبعدی را می توان مانند یک جدول تشکلیل شده از ردیف ها و ستون ها در نظر گرفت و الی آخر...
سی شارپ دو نوع آرایه ی چند بعدی را پشتیبانی می کند : rectangular and jagged
در یک آرایه ی rectangular هر ردیف ، طولش با ردیف بعدی یکی است. آرایه ی jagged در حقیقت آرایه ایی از آرایه ها است ، بنابراین هر کدام از آنها می تواند طول مختلفی داشته باشد.

تعریف یک آرایه ی دوبعدی به صورت زیر است :


type [,] array-name

مثال : یک برنامه ی سی شارپ جدید console را در VS.NET باز کنید و نام آنرا درابتدا ex19 انتخاب نمایید. سپس کد زیر را درون آن بنویسید :


using System;

namespace ex19
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
const int rows = 4;
const int columns = 3;
// declare a 4x3 integer array
int[,] rectangularArray = new int[rows, columns];
// populate the array
for (int i = 0;i < rows;i++)
{
for (int j = 0;j<columns;j++)
{
rectangularArray[i,j] = i+j;
}
}
// report the contents of the array
for (int i = 0;i < rows;i++)
{
for (int j = 0;j<columns;j++)
{
Console.WriteLine("rectangularArray[{0},{1}] = {2}",
i,j,rectangularArray[i,j]);
}
}

Console.ReadLine();
}
}
}

توضیحاتی در مورد کد فوق :
1- نحوه ی تعریف ، مقدار دهی اولیه و استفاده از آرایه های دو بعدی را در مثال فوق ملاحظه می نمایید.
2- در یک آرایه ی دوبعدی محل قرار گیری ردیف ها و ستون ها برای مثال به صورت زیر است :


new int[rows, columns]-


استفاده از آرایه های چند بعدی :

مثال : یک برنامه ی سی شارپ جدید console را در VS.NET باز کنید و نام آنرا درابتدا ex20 انتخاب نمایید. سپس کد زیر را درون آن بنویسید :


using System;

namespace ex20
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
const int rows = 4;
const int columns = 3;
// imply a 4x3 array
int[,] rectangularArray =
{
{0,1,2},
{3,4,5},
{6,7,8},
{9,10,11}
};
for (int i = 0;i < rows;i++)
{
for (int j = 0;j<columns;j++)
{
Console.WriteLine("rectangularArray[{0},{1}] = {2}",
i,j,rectangularArray[i,j]);
}
}
}
}
}

توضیحاتی در مورد کد فوق :
1- در حقیقت مثال فوق تعریف آرایه ایی از آرایه ها بود.
2- چون مقدار دهی اولیه به صورت واضحی انجام شده نیازی به ذکر ابعاد آرایه به صورت صحیح وجود نداشت.


بحث آرایه ها ادامه دارد...