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

面试题 相关文章推荐
AOP的定义以及作用
Sep 08 面试题
东方通信股份有限公司VC面试题
Aug 27 面试题
声明struct x1 { . . . }; 和typedef struct { . . . }x2;有什么不同
Jun 02 面试题
android面试问题与答案
Dec 27 面试题
什么是.net的Remoting技术
Jul 08 面试题
性能测试工程师的面试题
Feb 20 面试题
如何获得EntityManager
Feb 09 面试题
ajax是什么及其工作原理
Feb 08 面试题
一套中级Java程序员笔试题
Jan 14 面试题
Java程序员综合测试题
Apr 25 面试题
程序员跳槽必看面试题总结
Jun 28 面试题
J2EE中常用的名词进行解释
Nov 09 面试题
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常用字符串的总结(待续)
2013/06/07 PHP
PHP实例分享判断客户端是否使用代理服务器及其匿名级别
2014/06/04 PHP
php+html5使用FormData对象提交表单及上传图片的方法
2015/02/11 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
asp.net和asp下ACCESS的参数化查询
2008/06/11 Javascript
jquery实现输入框动态增减的实例代码
2013/07/14 Javascript
jQuery避免$符和其他JS库冲突的方法对比
2014/02/20 Javascript
浅谈 jQuery 事件源码定位问题
2014/06/18 Javascript
Window.Open如何在同一个标签页打开
2014/06/20 Javascript
JavaScript跨域方法汇总
2014/10/16 Javascript
JS判断图片是否加载完成方法汇总(最新版)
2016/05/13 Javascript
JavaScript实现Java中Map容器的方法
2016/10/09 Javascript
详解在Vue中如何使用axios跨域访问数据
2017/07/07 Javascript
Vue2.0实现将页面中表格数据导出excel的实例
2017/08/09 Javascript
NodeJS安装图文教程
2018/04/19 NodeJs
ES6 系列之 Generator 的自动执行的方法示例
2018/10/19 Javascript
js实现贪吃蛇小游戏
2019/10/29 Javascript
vue 封装 Adminlte3组件的实现
2020/03/18 Javascript
原生JavaScript实现刮刮乐
2020/09/29 Javascript
解决ant Design中Select设置initialValue时的大坑
2020/10/29 Javascript
python计算一个序列的平均值的方法
2015/07/11 Python
深入学习python的yield和generator
2016/03/10 Python
Windows下Python的Django框架环境部署及应用编写入门
2016/03/10 Python
Python安装官方whl包和tar.gz包的方法(推荐)
2017/06/04 Python
django数据库migrate失败的解决方法解析
2018/02/08 Python
PyQt QListWidget修改列表项item的行高方法
2019/06/20 Python
Python 实现一个手机号码获取妹子名字的功能
2019/09/25 Python
postman和python mock测试过程图解
2020/02/22 Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
2020/04/16 Python
Linux管理员面试经常问道的相关命令
2013/04/29 面试题
工厂保安员岗位职责
2014/01/31 职场文书
公立医院改革实施方案
2014/03/14 职场文书
爱护公共设施的标语
2014/06/24 职场文书
转让协议书范本
2014/09/13 职场文书
法人代表证明书范本
2015/06/18 职场文书
Python中的套接字编程是什么?
2021/06/21 Python