var joe = new self();Console.Writeline(joe);
…并获得以下输出:
joe
以下尝试
class Self { public string name { get; set; } = nameof(this); public overrIDe string ToString() { return name; }}
因为名称无法应用于此而失败.这个问题有解决方法吗?
编辑.我正在使用的场景确保没有两个引用指向同一个Self对象.
解决方法 不,nameof旨在引用您所指的成员的编译时名称.如果你想让一个对象拥有一个name属性作为其状态的一部分,那么这与你到达name属性的方式无关 – 正如FrédéricHamIDi所说,可能有多个变量(或者没有)引用同一个对象.基本上,您需要区分对象和恰好引用该对象的变量.但是,如果您有一个构造函数来指定名称,那么您可以使用一些技巧来更容易地获得正确的名称:
class Self{ public string name { get; } public Self([CallerMembername] string name = null) { this.name = name; }}
然后:
class Foo{ private Self me = new self(); // Equivalent to new Self("me") public voID SomeMethod() { // Can't use the default here,as it would be "SomeMethod". // But we can use nameof... var joe = new Self(nameof(joe)); }}总结
以上是内存溢出为你收集整理的c# – 如何处理nameof(this)来报告类名全部内容,希望文章能够帮你解决c# – 如何处理nameof(this)来报告类名所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)