博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
this关键字小结
阅读量:6494 次
发布时间:2019-06-24

本文共 1478 字,大约阅读时间需要 4 分钟。

this用法如下:

 
1.使用this来显示地标识字段的所有者(有点官方味道,看下例子就清楚了)
class
Student
{
  
public
string
FirstName;
  
public
string
LastName;
  
public
int
Scroe;
  
public
void
SetName(
string
firstName,
string
lastName)
   {
  
this
.FirstName
=
firstName;
  
this
.LastName
=
lastName;
   }
}
     
2.使用this来传递当前正在执行的对象的一个引用    
class
Student
{
  
public
string
FirstName;
  
public
string
LastName;
  
public
int
Score;
  
public
void
NewStudent()
   {
     Help.Insert(
this
);
   }
}
class
Help
{
  
public
static
void
Insert(Student student)
   {
   
//
....
   }
}
    NewStudent方法调用了Help类的Insert静态方法,需要向Insert方法传递Student对象,这是使用关键字this来完成的,它传递了正在其上调用NewStudent方法的那个Student对象实例
 
3.使用this调用另一个构造器
class
Student
{
  
public
Student(
string
firstName,
string
lastName)
   {
     FirstName
=
firstName;
     LastName
=
last;
   }
   //
如果我想重载一个构造函数,这个构造函数与上面的相比只是多了个参数Id,那我就可以这样做,
   public
Student(
int
score,
string
firstName,
string
lastName):
   this
(firstName,lastName)
   {
      Scroe
=
score;
//
使用this关键字后不用写FirstName=firstName。。。
   }
}
 
4.this用于扩展方法:C#3.0通过这个改进,就能为任何类添加实例方法。扩展方法的要求如下:
   1)第一个参数是要扩展或者要操作的类型,这称为被扩展的类型 
   2)在被扩展的类型名称前面附加this修饰符。
   3)引入扩展类型的命名空间
 
5.在引用类型的构造器以及值类型的构造器的使用
   C#不允许值类型定义无参的构造器(但是CLR是可以的),值类型的每一个字段的写入优先读取。值类型的每一个构造器必须初始化所有的类型字段。下面代码会报错:
internal  struct  SomeValType  {      private Int32 m_x, m_y;     private char m_z;      public  SomeValType(Int32 x)     {         m_x  = x;             }  }

一个替代的办法是使用this,如下:

public SomeValType(Int32 x) {    this = new SomeValType(); //此时,m_x和m_y为0,m_z为\0。   m_x = x; //这里m_x赋予了新的参数x的值}

在值类型的构造器里面,this代表一个值类型的实例并且可以给它赋值。在引用类型构造器中,this是只读的不能赋值。

转载地址:http://iikyo.baihongyu.com/

你可能感兴趣的文章
ORACLE常用脚本示例
查看>>
tomcat server.xml中文版
查看>>
LinkedList和ArrayList的区别
查看>>
Spring MVC 架构的java web工程如何添加登录过滤器
查看>>
数据库管理工具 Navicat Premium 使用
查看>>
基于deepin搭建Python3编程环境
查看>>
《转》解决struts2在(IE,Firefox)下载文件名乱码问题。
查看>>
espcms列表页ajax获取内容 - 并初始化swiper
查看>>
命令模式(Command Pattern)
查看>>
深度优先搜索之偏爱时间复杂度
查看>>
Python面向对象-类、实例的绑定属性、绑定方法和__slots__
查看>>
通过js对表单对象的便捷获取
查看>>
TCP/IP、HTTP的区别
查看>>
浏览器同源策略深入
查看>>
java中的内部类
查看>>
C++/C++11中std::numeric_limits的使用
查看>>
Django Admin后台管理模块的使用
查看>>
union
查看>>
药品相关表
查看>>
酱板鸭
查看>>