this در پارامتر تابع C# - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

this در پارامتر تابع C#

0 امتیاز
چرا در تعربف پارامترها از کلمه کلیدی this استفاده می کنیم ؟
سوال شده خرداد 27, 1394  بوسیله ی korosh (امتیاز 155)   11 32 37

1 پاسخ

+1 امتیاز
 
بهترین پاسخ

با سلام

گاهی اوقات پیش می آید که ما نیاز پیدا می کنیم که به یک شی یا نوع از پیش تعریف شده یک متد اضافه کنیم اما نمی خواهیم کل آن شی یا نوع را از اول پیاده سازی کنیم. البته این کار بصورت استاتیک انجام می شود. حتما برای شما پیش آمده که از متد IsNullOrEmpty() از نوع داده string برای خالی بودن یک متغیر رشته ای استفاده کرده باشید. حالا شما دوست دارید که یک متد به نوع داده string اضافه کنید بدون اینکه کل نوع داده را از اول پیاده سازی کنید. ما می خواهیم دو متد اضافه کنیم یک این که چک کند که تمام حروف رشته بزرگ هست یا نه و دیگر چک کند که تمام حروف رشته کوچک هست یا نه می باشد. ما برای انجام این کار باید از extension استفاده کنیم. و اینجاست که باید در پارامتر متد مورد نظرمون از this استفاده کنیم و بگوییم که ورودی ما خود یک کلاس یا یک نوع داده هست نه یک مقدار یا یک شی.

 

using System;

static class Extensions
{
    public static bool IsUpper(this string value)
    {
	// Consider string to be uppercase if it has no lowercase letters.
	for (int i = 0; i < value.Length; i++)
	{
	    if (char.IsLower(value[i]))
	    {
		return false;
	    }
	}
	return true;
    }

    public static bool IsLower(this string value)
    {
	// Consider string to be lowercase if it has no uppercase letters.
	for (int i = 0; i < value.Length; i++)
	{
	    if (char.IsUpper(value[i]))
	    {
		return false;
	    }
	}
	return true;
    }
}

class Program
{
    static void Main()
    {
	Console.WriteLine("test".IsLower()); // True
	Console.WriteLine("test".IsUpper());
	Console.WriteLine("Test".IsLower());
	Console.WriteLine("Test".IsUpper());
	Console.WriteLine("TEST3".IsLower());
	Console.WriteLine("TEST3".IsUpper()); // True
    }
}

 

خروجی برنامه:

True
False
False
False
False
True

 

با تشکر

پاسخ داده شده خرداد 27, 1394 بوسیله ی behzadkhan (امتیاز 56)   2 5 7
انتخاب شد خرداد 27, 1394 بوسیله ی korosh
...