关键字this的三种用法

来源:互联网 发布:网络推广的职业规划 编辑:程序博客网 时间:2024/06/06 06:33

用法一: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());

参考文章:博客园

原创粉丝点击