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面试题集
Dec 18 面试题
介绍一下Java的安全机制
Jun 28 面试题
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?用contains来区分是否有重复的对象。还是都不用
Jul 30 面试题
c/c++某大公司的两道笔试题
Feb 02 面试题
C面试题
Oct 08 面试题
数据库什么时候应该被重组
Nov 02 面试题
结构和类有什么异同
Jul 16 面试题
路由表示做什么用的?在linux环境中怎么来配置一条默认路由?
Jun 07 面试题
介绍一下write命令
Aug 10 面试题
如何用Python来进行查询和替换一个文本字符串
Jan 02 面试题
Java程序员面试题
Jul 15 面试题
Delphi工程师笔试题
Sep 21 面试题
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 杂谈《重构-改善既有代码的设计》之三 重新组织数据
2012/04/09 PHP
php页码形式分页函数支持静态化地址及ajax分页
2014/03/28 PHP
微信支付开发动态链接Native支付
2016/07/12 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
Mac系统下搭建Nginx+php-fpm实例讲解
2020/12/15 PHP
JQuery 选择器 xpath 语法应用
2010/05/13 Javascript
javascript创建和存储cookie示例
2014/01/07 Javascript
jquery统计用户选中的复选框的个数
2014/06/06 Javascript
js修改onclick动作的四种方法(推荐)
2016/08/18 Javascript
浅谈jquery.form.js的ajaxSubmit和ajaxForm的使用
2016/09/09 Javascript
微信小程序开发探究
2016/12/27 Javascript
深入理解vue路由的使用
2017/03/24 Javascript
JS请求servlet功能示例
2017/06/01 Javascript
Vue2.0 给Tab标签页和页面切换过渡添加样式的方法
2018/03/13 Javascript
NUXT SSR初级入门笔记(小结)
2019/12/16 Javascript
Python2.5/2.6实用教程 入门基础篇
2009/11/29 Python
pycharm 使用心得(七)一些实用功能介绍
2014/06/06 Python
Python实现简易端口扫描器代码实例
2017/03/15 Python
python3 遍历删除特定后缀名文件的方法
2018/04/23 Python
解决安装tensorflow遇到无法卸载numpy 1.8.0rc1的问题
2018/06/13 Python
pandas计数 value_counts()的使用
2019/06/24 Python
Python 多个图同时在不同窗口显示的实现方法
2019/07/07 Python
Python搭建代理IP池实现获取IP的方法
2019/10/27 Python
使用PyCharm进行远程开发和调试的实现
2019/11/04 Python
python实现矩阵和array数组之间的转换
2019/11/29 Python
tensorflow指定GPU与动态分配GPU memory设置
2020/02/03 Python
selenium WebDriverWait类等待机制的实现
2020/03/18 Python
解决img标签上下出现间隙的方法
2016/12/14 HTML / CSS
大学生个人简历中的自我评价
2013/12/27 职场文书
生日邀请函范文
2014/01/13 职场文书
项目合作协议书范本
2014/04/16 职场文书
保护环境演讲稿
2014/05/10 职场文书
小学生思想品德评语
2014/12/31 职场文书
介绍信范文
2015/01/31 职场文书
JavaScript嵌入百度地图API的最详细方法
2021/04/16 Javascript
十大动画制作软件,Adobe产品上榜两款,第一是行业标准软件
2022/03/18 杂记