C#中this保留字的用法
一、this保留字
this保留字一般只在构造函数、类的方法和类的实例中使用。它有以下含义:
?在类的构造函数中出现的this,则作为一个值类型,表示对正在构造的对象本身的引用。
?在类的方法中出现的this,则作为一个值类型,表示对调用该方法的对象的引用。
?在结构的构造函数中出现的this,则作为一个变量类型,表示对正在构造的结构的引用。
?在结构的方法中出现的this,则作为一个变量类型,表示对调用该方法的结构的引用。
除此之外,在其它地方使用this保留字都是不合法的。
二、提示
假如类中有一个成员变量a,同时在该类的成员函数中又定义了一个局部变量a,此时就必须使用this关键字来指定类的成员变量a了,具体写法就是:
this.a // 指定类的成员变量a,而不是成员函数中的局部变量a请阅读三、示例。
注:在类中,所谓的成员函数,实际上就是类的方法。
this表示当前类。
比如在一个类A中有一个b方法。如果要在类A中调用这个b方法,就可以使用:
this.b如果要在别的类中调用这个方法,就必须先实例化一个对象,然后再调用:
A a = new a();
a.b
在静态的方法中不能使用this,比如main方法就是一个静态的方法,因此,不能在main方法中使用this。
三、示例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class classTest // 自定义类classTest
{
private int age = 20; // 私有成员
public int ShowAge1(int age)// 参数和私有成员重名。
{
return this.age; // 返回的是私有成员age的数值
}
public int ShowAge2(int age)
{
return age; // 返回的是参数的数值
}
// 如果参数和私有成员不重名,在方法中访问成员时不需要添加this,
// 但好的习惯是加上this。
public int ShowAge3(int newage)
{
return age;
}
public int ShowAge4(int newage)
{
return this.age;
}
}
namespace Test
{
class Program
{
static void Main(string[] args)
{
// C#中this保留字的用法-www.baike369.com
classTest classTest1 = new classTest();
Console.WriteLine(classTest1.ShowAge1(100));
Console.WriteLine(classTest1.ShowAge2(100));
Console.WriteLine(classTest1.ShowAge3(100));
Console.WriteLine(classTest1.ShowAge4(100));
Console.ReadLine();
}
}
}
运行结果:
20
100
20
20
C#中this保留字的用法的更多相关文章
- Java中的Socket的用法
Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...
- ecshop中foreach的详细用法归纳
ec模版中foreach的常见用法. foreach 语法: 假如后台:$smarty->assign('test',$test); {foreach from=$test item=list ...
- matlab中patch函数的用法
http://blog.sina.com.cn/s/blog_707b64550100z1nz.html matlab中patch函数的用法——emily (2011-11-18 17:20:33) ...
- C#中timer类的用法
C#中timer类的用法 关于C#中timer类 在C#里关于定时器类就有3个 1.定义在System.Windows.Forms里 2.定义在System.Threading.Timer类 ...
- C#中dynamic的正确用法
C#中dynamic的正确用法 http://www.cnblogs.com/qiuweiguo/archive/2011/08/03/2125982.html dynamic是FrameWork4 ...
- C++中typename关键字的用法
我在我的 薛途的博客 上发表了新的文章,欢迎各位批评指正. C++中typename关键字的用法
- Guava中Predicate的常见用法
Guava中Predicate的常见用法 1. Predicate基本用法 guava提供了许多利用Functions和Predicates来操作Collections的工具,一般在 Iterabl ...
- C++中const 的各种用法
C++中const 关键字的用法 const修饰变量 const 主要用于把一个对象转换成一个常量,例如: ; size = ; // error: assignment of read-only v ...
- JS里设定延时:js中SetInterval与setTimeout用法
js中SetInterval与setTimeout用法 JS里设定延时: 使用SetInterval和设定延时函数setTimeout 很类似.setTimeout 运用在延迟一段时间,再进行某项操 ...
随机推荐
- c++中代理类的学习
https://blog.csdn.net/lcg910978041/article/details/51468680 C++代理类是为了解决这样的问题: 容器通常只能包含一种类型的对象,所以很难在容 ...
- sqoop导出数据
export是HDFS里的文件导出到RDBMS的工具,不能从hive.hbase导出数据,且HDFS文件只能是文本格式.如果要把hive表数据导出到RDBMS,可以先把hive表通过查询写入到一个临时 ...
- B-树 B+树 红黑树
B树是一种多路平衡查找树,它的每一个节点最多包含k个孩子,k被称为B树的阶.k的大小取决于磁盘页的大小.B树主要应用于文件系统以及部分数据库索引,比如著名的非关系型数据库MongoDB.一个m阶的B树 ...
- GBDT,FM,FFM推导
GBDT推导: https://xgboost.readthedocs.io/en/latest/tutorials/model.html FM,FFM推导: https://tech.meituan ...
- maya2017无法安装卸载激活失败
AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...
- [原创]Dubbo配置(Spring4+Hiberante4+Druid)
如果dubbo使用注解,并且spring也使用注解,如使用事务,则dubbo加过注解的类无法发布. <?xml version="1.0" encoding="UT ...
- ruby逻辑判断符号
puts true and false #相当于 (puts true) and false Use &&/|| for boolean expressions, and/or fo ...
- 二叉查找树的C语言实现(一)
什么是二叉查找树? 二叉查找树(Binary Search Tree),也称有序二叉树(ordered binary tree),排序二叉树(sorted binary tree),是指一棵空树或者具 ...
- DEDECMS v5.7 完美实现导航条下拉二级菜单
一.引言 好多人都问,织梦的下拉导航怎么做呢?其实很简单!即使你对代码一点也不熟悉,没关系! 按照我的步骤走!记住一步也不能错哦! 二.实现过程 1.首先: 将下面这段代码贴到templets\def ...
- 移动Web开发与适配笔记
项目要是适配手机端,想透彻的把相关内容弄清楚,现在总结一下. 一.移动端开发有如下特点: 1.跑在手机端的web 页面就是h5页面 2.具有跨平台性(web 安卓 iOS都适应) 3.基于webvie ...