rf1
- это просто имя переменной, поэтому даже если бы вы могли заставить это работать, это не было бы методом класса - в конце концов, вы могли бы иметь:
RefName rf1 = new RefName();
RefName rf2 = rf1;
это тот же экземпляр ; что должен rf1.outRefName()
производить? Нет, я не думаю, что ты можешь сделать это. В C # есть несколько хакерских способов сделать это (включая захваченные переменные и либо проверку отражения, либо проверку дерева выражений), но опять же - вы получаете имя переменной - ничего общего с объектом. Лучшим подходом здесь может быть предоставление вашему классу члена Name
и инициализация имени в конструкторе:
RefName rf1 = new RefName("myname");
Здесь имя объекта - «мое имя». Не rf1
, который является именем переменной.