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

面试题 相关文章推荐
什么是smarty? Smarty的优点是什么?
Aug 11 面试题
抽象方法、抽象类怎样声明
Oct 25 面试题
简述数组与指针的区别
Jan 02 面试题
如何提高SQL Server的安全性
Jul 25 面试题
杭州-DOTNET笔试题集
Sep 25 面试题
请编程遍历页面上所有 TextBox 控件并给它赋值为 string.Empty
Dec 03 面试题
C#里面如何倒序排列一个数组的元素?
Jun 21 面试题
linux面试题参考答案(8)
Apr 19 面试题
为什么要做架构设计
Jul 08 面试题
如何用Python来进行查询和替换一个文本字符串
Jan 02 面试题
若干个Java基础面试题
May 19 面试题
Delphi软件工程师试题
Jan 29 面试题
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脚本的10个技巧(1)
2006/10/09 PHP
我的论坛源代码(七)
2006/10/09 PHP
escape unescape的php下的实现方法
2007/04/27 PHP
PHP 反射机制实现动态代理的代码
2008/10/22 PHP
PHP登录环节防止sql注入的方法浅析
2014/06/30 PHP
使用PHP接受文件并获得其后缀名的方法
2015/08/05 PHP
PHP实现的微信公众号扫码模拟登录功能示例
2019/05/30 PHP
我也种棵OO树JXTree[js+css+xml]
2007/04/02 Javascript
通过Javascript创建一个选择文件的对话框代码
2012/06/16 Javascript
javascript分页代码(当前页码居中)
2012/09/20 Javascript
获得Javascript对象属性个数的示例代码
2013/11/21 Javascript
JS函数定义方式的区别介绍
2016/03/22 Javascript
Vue服务器渲染Nuxt学习笔记
2018/01/31 Javascript
基于vue.js实现的分页
2018/03/13 Javascript
vue.js实现的全选与全不选功能示例【基于elementui】
2018/12/03 Javascript
一文了解Vue中的nextTick
2019/05/06 Javascript
jQuery实现数字华容道小游戏(实例代码)
2020/01/16 jQuery
vue+springboot图片上传和显示的示例代码
2020/02/14 Javascript
基于Vue sessionStorage实现保留搜索框搜索内容
2020/06/01 Javascript
[01:08:09]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第二局
2016/03/02 DOTA
Python运算符重载用法实例分析
2015/06/01 Python
在Django中同时使用多个配置文件的方法
2015/07/22 Python
Python异常处理操作实例详解
2018/08/28 Python
Python字典中的键映射多个值的方法(列表或者集合)
2018/10/17 Python
python 消除 futureWarning问题的解决
2019/12/25 Python
pytorch 实现将自己的图片数据处理成可以训练的图片类型
2020/01/08 Python
python中什么是面向对象
2020/06/11 Python
详解用Python爬虫获取百度企业信用中企业基本信息
2020/07/02 Python
python利用后缀表达式实现计算器功能
2021/02/22 Python
设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
2014/12/30 面试题
餐厅执行经理岗位职责范本
2014/02/26 职场文书
领导走群众路线整改措施思想汇报
2014/10/12 职场文书
给领导的感谢信范文
2015/01/23 职场文书
小区环境卫生倡议书
2015/04/29 职场文书
新年祝酒词大全
2015/08/11 职场文书
PyTorch 如何自动计算梯度
2021/05/23 Python