this关键字

4 本我 15小时前 45次点击

除了使用base关键字外,还可以使用this关键字。与base一样,this也可以用在类成员的内部,且该关键字也引用对象实例。只是this引用的是当前的对象实例(即不能在静态成员中使用this关键字,因为静态成员不是对象实例的一部分)。

this关键字最常用的功能是把当前对象实例的引用传递给一个方法,如下例所示:

public void doSomething()

{

MyTargetClass myObj = new MyTargetClass();

myObj.DoSomethingWith(this);

}

其中,被实例化的MyTargetClass实例(myObj)有一个DoSomethingWith()方法,该方法带一个参数,其类型与包含上述方法的类兼容。这个参数类型可以是类的类型、由这个类继承的类类型,或者由这个类或System.Object实现的一个接口。

this关键字的另一个常见用法是限定局部类型的成员,例如:

public class MyClass

{

private int someData;

public int SomeData

{

get

{

return

this

.someData;

}

}

}

许多开发人员都喜欢这个语法,它可以用于任意成员类型,因为可以一眼看出引用的是成员,而不是局部变量。

示例

namespace 练习a

{

//定义类MyTargetClass

public class MyTargetClass

{

//定义方法,他的参数是CallerClass

public void DoSomethingWith(CallerClass caller)

{

WriteLine("MyTargetClass收到CallerClass的方法");

WriteLine($"MyTargetClass{caller.Name}");

}

}

//定义类CallerClass

public class CallerClass

{

//定义字段

public string Name { get; set; }

//定义方法

public void DoSomething()

{

WriteLine($"CallerClass{this.Name}");

//创建对象myObj

MyTargetClass myObj = new MyTargetClass();

myObj.DoSomethingWith(this);

}

}

class Program

{

static void Main(string[] args)

{

//创建对象caller1

CallerClass caller1 = new CallerClass();

//给类callerClass里的字段Name赋值

caller1.Name = "caller1";

caller1.DoSomething();

ReadKey();

}

}

}


目前还没有评论
添加一条新评论

登录后可以发表评论 去登录