آموزش نکات #C قسمت دوم

آموزش نکات #C قسمت دوم

ایندکسرها (Indexers):

ایندکسرها نوعی از پراپرتي‌ها هستند که به شما اجازه مي‌دهند با اشياء کلاس خود آرایه وار رفتار کنيد. تعریف یک ایندکسر نيز مانند تعریف یک پراپرتی است و در حالت کلی داریم:

this[arguments] { get { } Set { } } برای مثال با فرض داشتن کلاسی مانند: class Employee { private string[] name = new string[10]; public string this[int index] { get { return name[index]; } set { name[index] = value; } } }

مي‌توان نوشت:

Employee emp = new Employee(); emp[0] = "Joydip"; emp[1] = "Manashi"; emp[2] = "Jini";

نکته:

ایندکسرها حتما باید یک پارامتر داشته باشد.

ایندکسرها نمي‌توانند استاتيک باشند (بعلت نياز به This)

ارسال تعداد متغير پارامتر به یک متد

با استفاده از کلمه کليدی params مانند نمونه زیر:

public int Add(params int[] list) { int sum = 0; foreach (int i in list) sum += i; return sum; }

حال مي‌توانيم این متد را به این شکل صدا بزنيم:

int ans1 = Add(1); int ans2 = Add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); int ans3 = Add(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }); int ans4 = Add();

نکته : متد مي‌تواند چندین پارامتر دیگر غير از پارامتر از نوع params بپذیرد اما پارامتر params حتما باید آخرین پارامتر باشد. مانند:

public void AddAndPrint(string str, params int[] list) { int sum = 0; foreach (int i in list) sum += i; Console.WriteLine(str + sum); }

تعریف عملگر های سفارشی

class MyClass { private int number ; public MyClass(int _number) { this.number = _number; } public static MyClass operator+ (MyClass c1, MyClass c2) { return new MyClass(c1.number + c2.number); } }

تعریف یک Operator overloading هميشه باید بصورت Static و Public باشد و مقدار برگشتی آن نيز نمي‌تواند void باشند



نظرات کاربران



عبارت امنیتی : حاصل 8 × 6 می شود :
متن پیام :