Это имя переменной , а не имя объекта. Здесь также возникает вопрос: как зовут здесь:
Information foo, bar;
foo = bar = new Information();
Вы не можете сделать это для конструкторов и т.д .; в ограниченных сценариях можно получить имя переменной через Expression
, если вы действительно хотите:
public static void Main()
{
Information dataInformation = new Information();
Write(() => dataInformation);
}
static void Write<T>(Expression<Func<T>> expression)
{
MemberExpression me = expression.Body as MemberExpression;
if (me == null) throw new NotSupportedException();
Console.WriteLine(me.Member.Name);
}
Обратите внимание, что это зависит от реализации захвата и т. Д. - и, как правило, нахально.