我们说我有以下课程..
Class Boy
{
public void hello()
{
Console.WriteLine("Hello!");
}
static void Main(String[] args)
{
Boy a = new Boy();
a.hello();
}
}
Run Code Online (Sandbox Code Playgroud)
我知道变量'a'是'Boy'类型的引用变量.关键字"new"创建了一个"Boy"对象,将其地址分配给变量"a".
现在,我有可能得到我的对象的名字.C#中的对象是否有名称?
Mar*_*ell 12
我猜你是指变量的名称,"a".嗯,问题是:这不是对象的名称 - 对象没有名称.此外,对象可以对其进行零个或多个引用,例如:
var x = new SomeType(); // a class
var y = x;
Run Code Online (Sandbox Code Playgroud)
这里x和y都指向同一个对象.相等:
new SomeType();
Run Code Online (Sandbox Code Playgroud)
没有任何引用,但仍然是一个对象.此外,方法变量(本地)实际上在IL中没有名称 - 仅在c#中(对比,字段确实有名称).所以new SomeType().WriteName();没有任何意义.
所以没有:从对象引用中获取变量名称没有明智的方法.
如果希望对象具有名称,请添加Name属性.
有一些有趣的方法可以使用表达式树来获取字段变量的名称,但我不认为这对您要做的事情有用.
小智 11
class Boy
{
public void hello()
{
Console.WriteLine("Hello!");
}
static void Main(String[] args)
{
Boy a = new Boy();
a.hello();
Type objtype = a.GetType();
Console.WriteLine(objtype.Name); // this will display "Boy"
}
}
Run Code Online (Sandbox Code Playgroud)