C#中this指针的用法示例
作者:shichen2014 时间:2021-07-21 14:12:24
本文实例展示了C#中this指针的用法,对于初学者进一步牢固掌握C#有很大帮助,具体内容如下:
一、this指针是什么:
这里有一些面向对象编程的概念需要说明:类(Class)的概念和对象(Object)的概念
类是对事物概括,也是C#编码时所有代码归属的基本单位;而对象是对类的实例化,也就是C#里new方法的返回值。写代码是不能直接用操作类,而只能先实例化类,然后我们用这个类被实例化后的对象。
通俗一些的说明是,“类”好比是“人”的概念,而我们把类实例化后,就成为单个人的“对象”,例如:“张三”。
this就是你的代码所归属的“类”的实例化后的“对象”,也叫当前对象。
二、this指针的几种用法:
1、限定被相似的名称隐藏的成员
主要代码如下:
public class ThisName
{
public string name = "张三";
public int num = 55;
public ThisName() { }
public void GetThisName(string name, int num)
{
name = this.name;//调取全局变量name
num = this.num;//调取全局变量num
HttpContext.Current.Response.Write("参数name的值为:"+name+";参数num的值为:"+num);//输出结果为"参数name的值为张三;参数num值为:55"
}
}
2、将对象作为参数传递到别的方法中
主要代码如下:
public class ThisFF
{
public ThisFF()
{
}
public string shuju()
{
return "This指针当做方法传递";
}
public void f1(ThisFF ff)
{
HttpContext.Current.Response.Write(ff.shuju());
}
public void f()
{
f1(this);//this在这里可以理解为 ThisFF ff=news ThisFF();当前类的实例
}
}
ThisFF ff=news ThisFF();//方法实例
ff.f();//调用方法 输出结果为: This指针当做方法传递
3、声明索引器
主要代码如下:
private int _Sy;
public int this[int sy]
{
get { return _Sy;}
set { sy=_Sy;}
}
三、总结:
1.this关键字引用被访问成员所在的当前实例。静态成员函数没有this指针。this关键字可以用来从构造函数,实例方法和实例化访问器中访问成员。
不能在静态方法。静态属性访问器或者域声明的变量初始化程序中使用this关键字,这将会产生错误。
2.在类的构造函数中出现的this作为一个值类型表示对正在构造的对象本身的引用。
3.在类的方法中出现this作为一个值类型表示对调用该方法的对象的引用。
4.在结构的构造函数中出现的this作为一个变量类型表示对正在构造的结构的引用。
5.在结构的方法中出现的this作为一个变量类型表示对调用该方法的结构。
标签:C#,this
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
用intellij Idea加载eclipse的maven项目全流程(图文)
2021-09-12 06:11:16
![](https://img.aspxhome.com/file/2023/2/60082_0s.jpg)
C++右值引用与move和forward函数的使用详解
2023-07-05 19:27:33
Java FineReport报表工具导出EXCEL的四种方式
2021-07-20 02:58:17
![](https://img.aspxhome.com/file/2023/1/67451_0s.png)
Java服务限流算法的6种实现
2022-04-03 04:52:51
![](https://img.aspxhome.com/file/2023/3/62993_0s.jpg)
java控制台打印本月的日历
2023-10-15 22:58:12
![](https://img.aspxhome.com/file/2023/1/58621_0s.jpg)
SpringBoot自定义注解实现Token校验的方法
2023-11-13 23:17:52
java 读取本地文件实例详解
2023-08-12 20:41:32
Java最简洁数据结构之冒泡排序快速理解
2023-12-01 06:31:52
![](https://img.aspxhome.com/file/2023/8/60278_0s.png)
C#词法分析器之正则表达式的使用
2023-06-21 13:10:58
![](https://img.aspxhome.com/file/2023/2/66592_0s.png)
基于java math API 的详细解释说明
2021-10-04 06:51:44
Spring Boot项目如何同时支持HTTP和HTTPS协议的实现
2023-11-19 19:57:05
![](https://img.aspxhome.com/file/2023/1/59321_0s.jpg)
Java 8中的18个常用日期处理(收藏)
2023-03-02 02:01:54
![](https://img.aspxhome.com/file/2023/1/66491_0s.jpg)
Java中BigDecimal的舍入模式解析(RoundingMode)
2021-10-16 15:28:16
flutter实现appbar下选项卡切换
2023-06-21 13:35:24
![](https://img.aspxhome.com/file/2023/3/87313_0s.gif)
javaweb学习总结——使用JDBC处理MySQL大数据
2022-10-19 22:45:32
![](https://img.aspxhome.com/file/2023/6/63756_0s.png)
SpringMVC请求流程源码解析
2021-08-07 03:35:11
![](https://img.aspxhome.com/file/2023/3/64533_0s.jpg)
Java解码H264格式视频流中的图片
2023-11-24 23:58:24
Java如何有效避免SQL注入漏洞的方法总结
2021-11-22 07:01:54
使用spring框架中的组件发送邮件功能说明
2022-12-29 03:53:55
![](https://img.aspxhome.com/file/2023/1/63341_0s.png)
Visual Studio 2022 安装低版本 .Net Framework的图文教程
2023-06-22 19:18:44
![](https://img.aspxhome.com/file/2023/0/78990_0s.png)