C#中this关键字的用法示例

江屿
江屿
发布时间:2026-10-14| 2人浏览过
原创

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步:声明索引器

目的:

操作说明:在定义索引器时使用 this 关键字,允许使用 obj[index] 的语法形式。

private int _Sy;

// 声明索引器,注意这里使用的是 this,而非普通方法名
public int this[int sy]
{
  get { return _Sy; }
  set { _Sy = value; } // 修正原文逻辑错误:原代码 set 中 sy=_Sy 为无效自赋值且未赋值给字段,标准写法应使用 value 关键字赋值给 _Sy
}

三、注意事项与总结

1. 静态环境中的限制:
this 关键字引用的是当前实例。由于静态成员函数不属于任何实例,而是属于类本身,因此不能在静态方法、静态属性访问器或域声明的变量初始化程序中使用 this,否则会导致编译错误。

2. 不同上下文中的行为:
- 构造函数中: this 作为一个值类型,表示对正在构造的对象本身的引用。
- 实例方法中: this 作为一个值类型,表示对调用该方法的那个对象的引用。
- 结构(struct)中: 如果在结构的构造函数或方法中使用 this,它是一个变量类型(可修改),这与类中的引用类型有所区别,需注意在结构中修改 this 可能会影响调用它的结构体副本。

3. 核心要点回顾:
- this 代表当前实例。
- 主要用于解决命名冲突。
- 可用于参数传递和索引器定义。
- 严禁在静态上下文中使用。

以上就是关于 C# 中 this 关键字用法的详细内容,更多关于 C# 面向对象编程技巧的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。