PDA

View Full Version : سوال: اضافه كردن توابع به متغير string



iran400
چهارشنبه 23 مرداد 1387, 16:08 عصر
سلام

بنده مي‌خواهم روي متغير string چندتا تابع جديد تعريف كنم.
مثال:
string a = "Red"
color b = a.ToColor();1
a = a.ToRevece();
توجه داشته باشيد كه بدون اينكه كلاس جديد بسازم و از آن استفاده كنم چطور مي‌شود اين امكانات را اضافه نمود.

با تشكر از تمامي دوستان

hdv212
چهارشنبه 23 مرداد 1387, 18:03 عصر
اون چیزی که شما میخواهید فقط در C# 2008 قابل اجراست، به وسیله ی قابلیت جدیدی تحت عنوان Extension Methods که برای آشنایی و یادگیری میتونید به مقاله ی اینجانب در این مورد (موجود در امضای من) مراجعه کنید.

ASKaffash
چهارشنبه 23 مرداد 1387, 18:07 عصر
سلام
اینطوری :


public static class EM
{
public static int ToInt32(this string MyString)
{
return Convert.ToInt32(MyString);
}
}

Masiha1986
چهارشنبه 23 مرداد 1387, 18:41 عصر
با سلام
از اون جایی که کلاس String یک کلاس sealed است و نمی توان از آن ارث بری کرد تنها راه، استفاده از Extension هاست. فرض کنیم می خواهیم تابعی بنویسیم که درصورتی که String مورد نظر عبارت 'Test' بود مقدار true و در غیر این صورت مقدار false را برگرداند.
برای این کار از کد زیر استفاده می کنیم:



public static class StringExtensions
{
public static bool IsTest(this String str)
{
return str == "Test";
}
}
لازم به ذکر است که کلاس و متد Extension حتما باید static باشند.



از این به بعد در هر کلاسی که امکان دیده شدن کلاس StringExtensions وجود داشته باشد، می توان به شکل زیر از آن استفاده کرد:



string strTest = "Test";
MessageBox.Show(strTest.IsTest().ToString());

پروژه نمونه رو از قسمت 'فایل های پیوست شده' دانلود کن.