C#this的⽤法
如果定义的类中有⼀个成员变量为a,在类的成员函数中⼜定义了⼀个局部变量a,此时就必须使⽤this关键字来指⽰类的成员,也就是类的成员变量a写为this.a 。写的那些响应函数,其实都是类⽅法。
在程序运⾏后,⽅法可能会被很多这个类的实例(对象)来调⽤。那么请问,系统怎么知道调⽤这个类⽅法的是谁?是哪个对象?所以,这时this就发挥它的作⽤了
每当⼀个对象调⽤这个类⽅法的时候,系统就会⾃动把这个对象的指针赋给this指针  this指当前类
⽐如在⼀个AAA类⾥有⼀个aaa的⽅法
在这个AAA类中调⽤这个aaa⽅法就可以⽤this.aaa  如果是在别的类中就要实例化⼀个对象来调⽤这个⽅法  AAA a=new AAA();  a.aaa;
在静态的⽅法中不能使⽤this  如main⽅法就是⼀个静态⽅法
this是保留的指针指向当前对象它的好处就是在编译期就可以获得对象的地址,⽐如⼀个类中有个成员类,成员类需使⽤上层类的函数,就可以把this传到成员类中,this 关键字引⽤类的当前实例。
以下是调⽤本内中的构造函数,⽤this
using System;
namespace CallConstructor
{
public class Car
{
int petalCount = 0;
String s = "null";
Car(int petals)
{
petalCount = petals;
Console.WriteLine("Constructor w/int arg only,petalCount = " + petalCount);
}
Car(String s, int petals)  : this(petals)  //第⼀个this的意思是调⽤Car(int petals)⽅法的属性petals
{
this.s = s;    //第⼆个this的意思是实例化Car(String s, int petals)⽅法中的参数s(this.s = s)
Console.WriteLine("String & int args");
}
Car()  : this("hi", 47)  //第三个this是调⽤Car(String s, int petals)⽅法的两个参数并传参
{
Console.WriteLine("default constructor");
}
public static void Main()
{
Car x = new Car();
Console.Read();
}
}
}
//结果:
//Constructor w/int arg only,petalCount = 47 //String & int args //default constructor
this出现了,代表它所在的类的对象。 c#中 this保留字的⽤法:
this 关键字将引⽤类的当前实例,静态成员函数没有 this 指针,this 关键字可⽤于从构造函数实例⽅法和实例访问器中访问成员。
以下是 this 的常⽤⽤途:
限定被相似的名称隐藏的成员,例如:
public Employee(string name, string alias)
{
this.name = name;    this.alias = alias;
}
将对象作为参数传递到其他⽅法,例如:  CalcTax(this);
声明索引器,例如:
public int this [int param]
{
get
{
return array[param];
}
set
{
array[param] = value;
}
}
在静态⽅法静态属性访问器或字段声明的变量初始值设定项中引⽤ this 是错误的。⽰例:
在本例中,this ⽤于限定 Employee 类成员 name 和 alias,它们都被相似的名称隐藏。
this 还⽤于将对象传递到属于其他类的⽅法 CalcTax // keywords_this.cs // this example using System;
public class Employee
{
public string name;
public string alias;
public decimal salary = 3000.00m;    // Constructor:
public Employee(string name, string alias)
{
// Use this to qualify the fields, name and alias:
this.name = name;
this.alias = alias;
}
// Printing method:
public void printEmployee()
{
Console.WriteLine("Name: {0}\nAlias: {1}", name, alias);        // Passing the object to the CalcTax method by using this:            Console.WriteLine("Taxes: {0:C}", Tax.CalcTax(this));
}
}
public class Tax
{
public static decimal CalcTax(Employee E)
{
return (0.08m*(E.salary));
}
}
public class MainClass
{
public static void Main()
{
Employee E1 = new Employee ("John M. Trainer", "jtrainer");        // Create objects:
E1.printEmployee();            // Display results:
}
}
输出
Name: John M. Trainer Alias: jtrainer Taxes: $240.00
writeline方法的作用this关键字--精通c#编程
this关键字引⽤被访问成员所在的当前实例,静态成员函数没有this指针,this关键字可以⽤来从构造函数,实例⽅法和实例化访问器中访问成员
不能在静态⽅法静态属性访问器或者域声明的变量初始化程序中使⽤this关键字,这将会产⽣错误
1.在类的构造函数中出现的this作为⼀个值类型表⽰对正在构造的对象本⾝的引⽤
2.在类的⽅法中出现this作为⼀个值类型表⽰对调⽤该⽅法的对象的引⽤
3.在结构的构造函数中出现的this作为⼀个变量类型表⽰对正在构造的结构的引⽤
4.在结构的⽅法中出现的this作为⼀个变量类型表⽰对调⽤该⽅法的结构,使⽤this访问被相似名字隐藏员
using System; class E
{
public int id;
public string name;
public E(string name,int id)
{
this.name=name;
this.id=id;//限定被相似的名称隐藏的成员
}
public void P()
{
Print.pe(this); //作为参数传递到其他⽅法中去
}
class Print
{
public static void pe(E x)
{
Console.WriteLine("name:{0}\t id:{1}",x.name,x.id);
}
}
}
class Test
{
public static void Main()
{
Console.WriteLine("请输⼊姓名:");
string >  Console.WriteLine("请输⼊id号");    string s=Console.ReadLine();    int >  E e=new E(name,id);    e.P(); } }
================================ 利⽤this在索引中的引⽤访问类 using System; class Ic {
private int []arr=new int[10]; public int this[int index] {
get    {
if(index<0 || index>=10)    {
Console.WriteLine("下标越界!");      return 0;    }    else
return arr[index];    }    set    {
if(!(index>=10 || index<0))      arr[index] = value;    } } }
class T {
static void Main() {
Ic mic=new Ic();
Console.WriteLine("输⼊要赋值元素的下标:");    string s=Console.ReadLine();    int index=int.Parse(s);
Console.WriteLine("请输⼊值:");    string str=Console.ReadLine();    int n=int.Parse(str);    mic[index]=n;    Console.WriteLine("current value:mic[index]={0}",mic[index]);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。