X
تبلیغات
رایتل

---->

گاهی از اوقات لازم است تا نگارش های مختلفی از یک تابع داشته باشیم. برای مثال تعریف سه تابع با یک نام اما با آرگومانهای مختلف. به این نوع توابع و یا متدها اصطلاحا 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
{
rectangularArray[i,j] = i+j;
}
}
// report the contents of the array
for (int i = 0;i < rows;i++)
{
for (int j = 0;j
{
Console.WriteLine("rectangularArray[{0},{1}] = {2}",
i,j,rectangularArray[i,j]);
}
}

Console.ReadLine();
}
}
}


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


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


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

 new int[rows, columns]

 

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



مثال : یک برنامه ی سی شارپ جدید

 

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
{
Console.WriteLine("rectangularArray[{0},{1}] = {2}",
i,j,rectangularArray[i,j]);
}
}
}
}
}  

 

 


1- در حقیقت مثال فوق تعریف آرایه ایی از آرایه ها بود.


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

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

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