【发布时间】:2015-01-08 10:26:56
【问题描述】:
我想使用以下 C#6 代码
var joe = new Self();
Console.WriteLine(joe);
... 并得到以下输出:
乔
下面的尝试
class Self {
public string Name { get; set; } = nameof(this);
public override string ToString() {
return Name;
}
}
失败,因为 nameof 不能应用于 this。这个问题有解决办法吗?
编辑。我正在使用的场景确保没有两个引用指向同一个 Self 对象。
【问题讨论】:
-
我不这么认为。考虑
var joe = new Self(); var jack = joe;。Name应该返回"joe"、"jack",还是两者都返回? -
nameof(joe)有什么问题 -
您可以从这篇文章中了解nameof(..)的一些用法:spicelogic.com/Journal/C-sharp-6-most-exciting-features-9
-
同一类的不同实例的唯一性是通过
ReferenceEquals、Equals和GetHashCode方法实现的,也许可以通过自定义实现(例如Equals可以检查Id字段/property 在两个被检查的实例上)。你用nameof来实现这样一个目标的想法很奇怪…… -
为什么我们不能使用
this.GetType().Name?