TAHA
09-29-2009, 07:03 AM
مبحث 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- چون مقدار دهی اولیه به صورت واضحی انجام شده نیازی به ذکر ابعاد آرایه به صورت صحیح وجود نداشت.
بحث آرایه ها ادامه دارد...
گاهی از اوقات لازم است تا نگارش های مختلفی از یک تابع داشته باشیم. برای مثال تعریف سه تابع با یک نام اما با آرگومانهای مختلف. به این نوع توابع و یا متدها اصطلاحا 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- چون مقدار دهی اولیه به صورت واضحی انجام شده نیازی به ذکر ابعاد آرایه به صورت صحیح وجود نداشت.
بحث آرایه ها ادامه دارد...