关键字this的三种用法

用法一:this代表当前类的实例对象

public class Test
{
    private string scope = "全局变量";
    public string getResult()
    {
        string scope = "局部变量";
     // this代表Test的实例对象
     // 所以this.scope对应的是全局变量
      // scope对应的是getResult方法内的局部变量
        return this.scope + "-" + scope;
    }
}

用法二:用this串联构造函数

public class Test
{
    public Test()
    {
        Console.WriteLine("无参构造函数");
    }
    // this()对应无参构造方法Test()
    // 先执行Test(),后执行Test(string text)
    public Test(string text) : this()
    {
        Console.WriteLine(text);
        Console.WriteLine("有参构造函数");
    }
}

调用:

Test test = new Test("张三");

打印结果如图1-1所示,如果还有另一个构造函数Test(int value)需要串联的话用,可以用this(2)来操作。

关键字this的三种用法_第1张图片
图1-1 测试结果

用法三:为原始类型扩展方法

特点:静态类;静态方法;第一个参数前加this。(扩展方法必须是静态类中的静态方法)
例如:public static string ToDescription(this Gender myEnum),这行代码的意思是为Gender类型添加一个扩展方法ToDescription(),调用方式为:gender.ToDescription();

public enum Gender
{
    [Description("男")]
    Man,
    [Description("女")]
    Woman
}

public static class Extension
{
    public static string ToDescription(this Gender myEnum)
    {
        Type type = typeof(Gender);
        FieldInfo info = type.GetField(myEnum.ToString());
        DescriptionAttribute descriptionAttribute = info.GetCustomAttributes(typeof(DescriptionAttribute), true)[0] as DescriptionAttribute;
        if (descriptionAttribute != null)
            return descriptionAttribute.Description;
        else
            return type.ToString();
    }
}

调用:

Gender gender = Gender.Man;
MessageBox.Show(gender.ToDescription());

参考文章:博客园

你可能感兴趣的:(C#)