this关键字的含义


Posted in 面试题 onApril 08, 2015
this是一个保留字,仅限于构造函数和方法成员中使用
在类的构造函数中出现表示对正在构造的对象本身的引用,在类的方法中出现表示对调用该方法的对象的引用,在结构的构造上函数中出现表示对正在构造的结构的引用,在结构的方法中出现表示对调用该方法的结果的引用
this保留字不能用于静态成员的实现里,因为这时对象或结构并未实例化
在 C# 系统中,this 实际上是一个常量,所以不能使用 this++ 这样的运算
this保留字一般用于限定同名的隐藏成员、将对象本身做为参数、声明索引访问器、判断传入参数的对象是否为本身
示例:
using System;
using System.Collections.Generic;
using System.Text;
namespace Example10
{
class Class1
{
private double c;
private string value;
public double C
{
get
{
return c;
}
}
public Class1(double c)
{
//限定同名的隐藏成员
this.c = c;
}
public Class1(Class1 value)
{
//用对象本身实例化自己没有意义
if (this != value)
{
c = value.C;
}
}
public override string ToString()
{
//将对象本身做为参数
return string.Format(“{0} Celsius = {1} Fahrenheit”, c, UnitTransClass.C2F(this));
}
//由于好奇,在这做了一个效率测试,想看看到底哪种方式访问成员变量更快,结论:区别不大。。。
public string Test1()
{
long vTickCount = Environment.TickCount;
for (int i = 0; i this.value = i.ToString();
return string.Format(“Have this.: {0} MSEL”, Environment.TickCount – vTickCount);
}
public string Test2()
{
long vTickCount = Environment.TickCount;
for (int i = 0; i value = i.ToString();
return string.Format(“Don’t have this.: {0} MSEL”, Environment.TickCount – vTickCount);
}

}

class UnitTransClass

{

public static double C2F(Class1 value)

{

//摄氏到华氏的转换公式

return 1.8 * value.C + 32;

}

}

class Program

{

static void Main(string[] args)

{

Class1 tmpObj = new Class1(37.5);

Console.WriteLine(tmpObj);

Console.WriteLine(tmpObj.Test1());

Console.WriteLine(tmpObj.Test2());
Console.ReadLine();
}
}
}
结果:
37.5 Celsius = 99.5 Fahrenheit
Have this.: 4375 MSEL
Don’t have this.: 4406 MSEL

Tags in this post...

面试题 相关文章推荐
Java中有几种方法可以实现一个线程?用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用?
Aug 04 面试题
JDO的含义
Nov 17 面试题
在C语言中"指针和数组等价"到底是什么意思?
Mar 24 面试题
SQL数据库笔试题
Mar 08 面试题
某公司的.net工程师面试题笔试题
Nov 22 面试题
委托与事件是什么关系?为什么要使用委托
Apr 18 面试题
介绍一下常见的木马种类
Nov 15 面试题
What is EJB
Jul 22 面试题
AJAX的优缺点都有什么
Aug 18 面试题
J2EE模式面试题
Oct 11 面试题
如何将一个描述日期或日期/时间的字符串转换为一个Date对象
Oct 13 面试题
WSDL的操作类型主要有几种
Jul 19 面试题
Can a struct inherit from another class? (结构体能继承类吗)
Jul 22 #面试题
.net C#面试题
Aug 28 #面试题
可以使用抽象函数重写基类中的虚函数吗
Jun 02 #面试题
如何选择使用结构还是类
May 30 #面试题
C#面试问题
Jul 29 #面试题
密封类可以有虚函数吗
Aug 11 #面试题
说出你对remoting 和webservice的理解和应用
Jun 08 #面试题
You might like
php miniBB中文乱码问题解决方法
2008/11/25 PHP
PHP读取XML值的代码(推荐)
2011/01/01 PHP
解密ThinkPHP3.1.2版本之模块和操作映射
2014/06/19 PHP
ThinkPHP整合百度Ueditor图文教程
2014/10/21 PHP
PHP simplexml_load_string()函数实例讲解
2019/02/03 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
JS去除字符串的空格增强版(可以去除中间的空格)
2009/08/26 Javascript
原生javascript和jquery判断浏览器版本等信息
2013/07/04 Javascript
Javascript遍历table中的元素示例代码
2014/07/08 Javascript
js单独获取一个checkbox看其是否被选中
2014/09/22 Javascript
JavaScript事件代理和委托详解
2016/04/08 Javascript
Node.js环境下编写爬虫爬取维基百科内容的实例分享
2016/06/12 Javascript
AngularJS入门教程中SQL实例详解
2016/07/27 Javascript
EditPlus中的正则表达式 实战(4)
2016/12/15 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
2017/02/21 Javascript
微信小程序 支付功能(前端)的实现
2017/05/24 Javascript
JSON创建键值对(key是中文或者数字)方式详解
2017/08/24 Javascript
微信小程序媒体组件详解(视频,音乐,图片)
2017/09/19 Javascript
Vue.js 点击按钮显示/隐藏内容的实例代码
2018/02/08 Javascript
微信小程序整合使用富文本编辑器的方法详解
2019/04/25 Javascript
JS实现查找数组中对象的属性值是否存在示例
2019/05/24 Javascript
JSX在render函数中的应用详解
2019/09/04 Javascript
vue-property-decorator用法详解
2019/12/12 Javascript
Vue使用Element实现增删改查+打包的步骤
2020/11/25 Vue.js
[01:07:20]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第二场 2月2日
2021/03/11 DOTA
Opencv-Python图像透视变换cv2.warpPerspective的示例
2019/04/11 Python
Python二元赋值实用技巧解析
2019/10/25 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
2020/03/19 Python
Python Selenium自动化获取页面信息的方法
2020/08/31 Python
用python发送微信消息
2020/12/21 Python
酒店实习个人鉴定
2013/12/07 职场文书
社会稳定风险评估方案
2014/06/02 职场文书
国际金融专业自荐信
2014/07/05 职场文书
信用卡逾期证明示例
2014/09/13 职场文书
解决numpy数组互换两行及赋值的问题
2021/04/17 Python
python中的getter与setter你了解吗
2022/03/24 Python