关键字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)来操作。

这里写图片描述
图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());

参考文章:博客园

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值