this关键字小结

简介: this用法如下:  1.使用this来显示地标识字段的所有者(有点官方味道,看下例子就清楚了) class Student{   public string FirstName;   public string LastName;   public int Scroe;...

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是只读的不能赋值。

相关文章
|
8月前
|
Java
属性与this关键字
属性与this关键字
27 0
|
8月前
|
C++
C++构造函数初始化列表
构造函数的一项重要功能是对成员变量进行初始化,为了达到这个目的,可以在构造函数的函数体中对成员变量一一赋值,还可以采用初始化列表。 C++构造函数的初始化列表使得代码更加简洁,请看下面的例子: #include <iostream> using namespace std; class Student{ private: char *m_name; int m_age; float m_score; public: Student(char *name, int age, float s
49 0
C++构造函数初始化列表
|
9月前
|
Java 编译器
构造函数中为什么要用this关键字?
构造函数中为什么要用this关键字?
46 0
|
11月前
this关键字的使用注意
this关键字的使用注意
|
编译器 C++
C++类和对象【2】—— 对象特性(构造函数、析构函数、拷贝构造函数、深浅拷贝、初始化列表、类对象作为成员类、静态成员变量及静态成员函数等。)
C++类和对象【2】—— 对象特性(构造函数、析构函数、拷贝构造函数、深浅拷贝、初始化列表、类对象作为成员类、静态成员变量及静态成员函数等。)
135 0
C++类和对象【2】—— 对象特性(构造函数、析构函数、拷贝构造函数、深浅拷贝、初始化列表、类对象作为成员类、静态成员变量及静态成员函数等。)
|
JavaScript
6、this关键字
6、this关键字
68 0
6、this关键字
|
自然语言处理 JavaScript 前端开发
浅谈一下this关键字
浅谈一下this关键字
64 0
浅谈一下this关键字
|
Android开发
构造函数与初始化块
构造函数与初始化块
118 0