用法一: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());
参考文章:博客园