C#中this关键字的用法示例
C# 中的 this 关键字用于引用类的当前实例。它主要用于区分同名变量与属性、将当前对象传递给其他方法,以及定义索引器。理解 this 的关键在于明确类(Class)是模板,而对象(Object)是实例化后的具体实体,this 即指向该实例。
一、理解 this 的作用基础
在 C# 面向对象编程中,类是对事物概念的概括,也是代码归属的基本单位;而对象是对类的实例化,通常由 new 关键字创建。例如,"人"是一个类,而 "张三" 是该类的一个实例对象。
this 指的是代码所归属的类在被实例化后的那个特定对象,也称为当前对象。它是访问当前实例成员的途径。
二、this 关键字的常见用法
第1步:限定被相似的名称隐藏的成员
目的:当方法的参数名称与类的字段名称相同时,使用 this 前缀可以明确区分是调用全局(类级)变量还是局部(参数)变量。
操作说明:在赋值语句中,左侧若不加 this 则默认为局部变量,右侧若需引用字段则需加上 this 前缀。
public class ThisName
{
public string name = "张三";
public int num = 55;
public void GetThisName(string name, int num)
{
// 此处使用 this 明确指向类级别的字段
// 如果直接写 name = name,则是将参数值赋给参数本身,无意义
name = this.name;
num = this.num;
// 输出演示
System.Console.WriteLine($"参数name的值为:{name};参数num的值为:{num}");
}
}
第2步:将当前对象作为参数传递到别的方法中
目的:在链式调用或需要当前实例上下文的其他方法时,可以通过 this 将当前对象的引用作为参数传递。
操作说明:在方法内部调用另一个接受该类实例为参数的方法时,直接使用 this 即可,无需手动再次实例化。
public class ThisFF
{
public string shuju()
{
return "This指针当做方法传递";
}
public void f1(ThisFF ff)
{
System.Console.WriteLine(ff.shuju());
}
public void f()
{
// 将当前实例 this 传递给 f1 方法
f1(this);
}
}
// 外部调用示例
// ThisFF ff = new ThisFF();
// ff.f(); // 输出结果为:This指针当做方法传递
第3步:声明索引器
目的:
操作说明:在定义索引器时使用 1. 静态环境中的限制: 2. 不同上下文中的行为: 3. 核心要点回顾: 以上就是关于 C# 中 this 关键字用法的详细内容,更多关于 C# 面向对象编程技巧的资料请关注本站其它相关文章!this 关键字,允许使用 obj[index] 的语法形式。private int _Sy;
// 声明索引器,注意这里使用的是 this,而非普通方法名
public int this[int sy]
{
get { return _Sy; }
set { _Sy = value; } // 修正原文逻辑错误:原代码 set 中 sy=_Sy 为无效自赋值且未赋值给字段,标准写法应使用 value 关键字赋值给 _Sy
}三、注意事项与总结
this 关键字引用的是当前实例。由于静态成员函数不属于任何实例,而是属于类本身,因此不能在静态方法、静态属性访问器或域声明的变量初始化程序中使用 this,否则会导致编译错误。
- 构造函数中: this 作为一个值类型,表示对正在构造的对象本身的引用。
- 实例方法中: this 作为一个值类型,表示对调用该方法的那个对象的引用。
- 结构(struct)中: 如果在结构的构造函数或方法中使用 this,它是一个变量类型(可修改),这与类中的引用类型有所区别,需注意在结构中修改 this 可能会影响调用它的结构体副本。
- this 代表当前实例。
- 主要用于解决命名冲突。
- 可用于参数传递和索引器定义。
- 严禁在静态上下文中使用。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













