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...

面试题 相关文章推荐
PHP面试题大全
Oct 16 面试题
error和exception有什么区别
Oct 02 面试题
介绍一下Java的安全机制
Jun 28 面试题
abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗?
Oct 15 面试题
介绍一下gcc特性
Jan 20 面试题
shell程序中如何注释
Feb 17 面试题
AURALog面试题软件测试方面
Oct 22 面试题
介绍一下结构化程序设计方法和面向对象程序设计方法的区别
Jun 27 面试题
垃圾回收的优点和原理
May 16 面试题
Java中采用什么结构来捕获、处理异常?各子句的顺序、功能如何
Oct 07 面试题
既然说Ruby中一切都是对象,那么Ruby中类也是对象吗
Jan 26 面试题
如何理解transaction事务的概念
May 27 面试题
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安全编程之加密功能
2006/10/09 PHP
PHP二维数组的去重问题解析
2011/07/17 PHP
解析PHP提交后跳转
2013/06/23 PHP
php stream_get_meta_data返回值
2013/09/29 PHP
php计算一个文件大小的方法
2015/03/30 PHP
php模拟post上传图片实现代码
2016/06/24 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
jquery validator 插件增加日期比较方法
2010/02/21 Javascript
dwz 如何去掉ajaxloading具体代码
2013/05/22 Javascript
jQuery调用RESTful WCF示例代码(GET方法/POST方法)
2014/01/26 Javascript
开源的javascript项目Kissy介绍
2014/11/28 Javascript
JavaScript观察者模式(经典)
2015/12/09 Javascript
Angularjs 滚动加载更多数据
2016/03/17 Javascript
AngularJS $http模块POST请求实现
2017/04/08 Javascript
angular组件间传值测试的方法详解
2020/05/07 Javascript
webpack5 联邦模块介绍详解
2020/07/08 Javascript
Python中字典和JSON互转操作实例
2015/01/19 Python
解析Python中while true的使用
2015/10/13 Python
Python中http请求方法库汇总
2016/01/06 Python
python扫描proxy并获取可用代理ip的实例
2017/08/07 Python
Python 实用技巧之利用Shell通配符做字符串匹配
2019/08/23 Python
Python+Tensorflow+CNN实现车牌识别的示例代码
2019/10/11 Python
Python selenium页面加载慢超时的解决方案
2020/03/18 Python
Python基于字典实现switch case函数调用
2020/07/22 Python
Python通过Schema实现数据验证方式
2020/11/12 Python
HTML5通过navigator.mediaDevices.getUserMedia调用手机摄像头问题
2020/04/27 HTML / CSS
英国儿童鞋和靴子:Start-Rite
2019/05/06 全球购物
电大毕业生自我鉴定
2013/11/10 职场文书
护理学中专毕业生求职信
2013/11/11 职场文书
大专生简历的自我评价
2013/11/26 职场文书
家长给孩子的表扬信
2014/01/17 职场文书
文艺晚会策划方案
2014/06/11 职场文书
房地产销售主管岗位职责
2015/02/13 职场文书
感恩节寄语2015
2015/03/24 职场文书
演讲稿:​快乐,从不抱怨开始!
2019/04/02 职场文书
详解MySql中InnoDB存储引擎中的各种锁
2022/02/12 MySQL