是否可以获取执行方法的对象实例?
例如......
public class Person
{
public string Name { get; set; }
public void PrintMyName()
{
NamePrinter np = new NamePrinter();
np.PrintName();
}
}
public class NamePrinter
{
public void PrintName()
{
Person p = ?;
Console.Writeline(p.Name);
}
}
public class Program
{
static void Main()
{
Person person = new Person() { Name = "Brandon"; }
person.PrintMyName();
}
}
有没有办法在PrintName方法中找到'p'?
编辑:上面的代码中的问题可以通过很多不同的方式解决,非常容易。请假设我并不愚蠢,这只是我能提出的最简单的代码,以使我的问题清楚。
答案 0 :(得分:4)
你不能这样做是因为:
当调用类中的方法时,调用代码的任何内容都不会被压入堆栈(除了方法的参数之外),因此根本没有信息可以通过这种方式使用。
我认为,在你的情况下,正确的解决方案是将一个Person类型的参数添加到PrintName()(我想你已经考虑过了吗?)