زمانی که در C# می‌خوای متدی بنویسی که به یک نوع خاص (مثلاً string) اضافه بشه، از کلمه کلیدی this در پارامتر اول استفاده می‌کنی.

مثلا اگه همچین کدی داشته باشیم:

public static string MaskAllButFirst(this string value, int visibleCount = 4, char maskChar = '*')

یعنی داری یه متد جدید به نوع string اضافه می‌کنی که اسمش هست MaskAllButFirst.

بعد از نوشتن این متد، می‌تونی به راحتی روی هر رشته (string) این متد رو صدا بزنی، انگار که خودش جزو توابع خود string هست!

مثال:

string number = "1234567890";
string masked = number.MaskAllButFirst();  // خروجی: "1234******"

⚠️ اما حتما حواستون باشه:

  1. این متد باید در یک کلاس static نوشته بشه.
  2. برای اینکه این اکستنشن کار کنه، باید فضای نام (namespace) کلاس StringExtensions رو هم در فایل خودت using کرده باشی. مثلا:
public static class StringExtensions
{
    public static string MaskAllButFirst(this string value, int visibleCount = 4, char maskChar = '*')
    {
        if (string.IsNullOrEmpty(value) || visibleCount >= value.Length)
            return value;
 
        return value.Substring(0, visibleCount) + new string(maskChar, value.Length - visibleCount);
    }
}

و در کد نهایی هم using بشه.

با استفاده از این راه، نیاز به استفاده از وراثت هم نیست و میتونی مستقیم روی رشته‌ها، MaskAllButFirst() رو صدا بزنی.