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

面试题 相关文章推荐
Yahoo-PHP面试题1
Jul 20 面试题
局部内部类是否可以访问非final变量?
Apr 20 面试题
简单介绍Object类的功能、常用方法
Oct 02 面试题
铭立家具面试题
Dec 06 面试题
C#如何调用Word并打开一个Word文档
May 08 面试题
Linux常见面试题
Oct 04 面试题
如何获得EntityManager
Feb 09 面试题
如何用Python来进行查询和替换一个文本字符串
Jan 02 面试题
介绍一下Java中标识符的命名规则
Feb 03 面试题
J2EE面试题大全
Aug 06 面试题
我们没有写servlet的构造方法,那么容器是怎么创建servlet的实例呢
Apr 24 面试题
什么是servlet链?
Jul 13 面试题
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
PHP4在WinXP下IIS和Apache2服务器上的安装实例
2006/10/09 PHP
PHP 字符串正则替换函数preg_replace使用说明
2011/07/15 PHP
PHP使用SOAP调用.net的WebService数据
2013/11/12 PHP
ThinkPHP3.2.3数据库设置新特性
2015/03/05 PHP
PHP实现批量修改文件后缀名的方法
2015/07/30 PHP
JavaScript Konami Code 实现代码
2009/07/29 Javascript
jquery.post用法示例代码
2014/01/03 Javascript
基于jquery animate操作css样式属性小结
2015/11/27 Javascript
谈一谈javascript中继承的多种方式
2016/02/19 Javascript
实例剖析AngularJS框架中数据的双向绑定运用
2016/03/04 Javascript
JS操作COOKIE实现备忘记录的方法
2016/04/01 Javascript
js 获取当前web应用的上下文路径实现方法
2016/08/19 Javascript
简单实现jquery焦点图
2016/12/12 Javascript
three.js绘制地球、飞机与轨迹的效果示例
2017/02/28 Javascript
JavaScript对象的浅拷贝与深拷贝实例分析
2018/07/25 Javascript
Vue+webpack+Element 兼容问题总结(小结)
2018/08/16 Javascript
Vue的路由及路由钩子函数的实现
2019/07/02 Javascript
jQuery实现简易QQ聊天框
2020/02/10 jQuery
[01:01:13]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第三场
2018/04/06 DOTA
[59:32]Liquid vs Fnatic 2019国际邀请赛淘汰赛败者组BO1 8.20.mp4
2020/07/19 DOTA
[05:06]DOTA2-DPC中国联赛 正赛 VG vs Magma选手采访
2021/03/11 DOTA
极简的Python入门指引
2015/04/01 Python
利用python获取当前日期前后N天或N月日期的方法示例
2017/07/30 Python
Python中类的初始化特殊方法
2017/12/01 Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
2019/08/05 Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
2020/03/25 Python
使用PyCharm安装pytest及requests的问题
2020/07/31 Python
calendar在python3时间中常用函数举例详解
2020/11/18 Python
神话般的珠宝:Ross-Simons
2020/07/13 全球购物
2015届本科毕业生自我鉴定
2014/09/27 职场文书
优秀团支部申报材料
2014/12/26 职场文书
单位收入证明范本
2015/06/18 职场文书
小学英语教学反思范文
2016/02/15 职场文书
2016创先争优活动党员公开承诺书
2016/03/24 职场文书
python面向对象版学生信息管理系统
2021/06/24 Python
Consul在linux环境的集群部署
2022/04/08 Servers