- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我想使用下面的 C#6 代码
var joe = new Self();
Console.WriteLine(joe);
...并获得以下输出:
joe
下面的尝试
class Self {
public string Name { get; set; } = nameof(this);
public override string ToString() {
return Name;
}
}
失败,因为 nameof
不能应用于 this
。这个问题有解决方法吗?
编辑。我正在处理的场景确保没有两个引用指向同一个 Self
对象。
最佳答案
不,nameof
旨在引用您所引用的成员的编译时名称。如果您希望对象将 Name
属性作为其状态的一部分,这与您获取 Name
属性的方式无关 - 如Frédéric Hamidi 说,可能有多个变量(或没有)指向同一个对象。基本上,您需要区分对象和恰好引用该对象的变量。
但是,如果您有构造函数来指定名称,则可以使用一些技巧来更轻松地获得正确的名称:
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) 报告类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27837867/
我有一个简单的类: public class Stu { public string Name { get; set; } } 如果我这样做: var stu = new Stu(); Con
我发现了一个有趣的包并想在我的 typescript 应用程序中使用它:https://github.com/dsherret/ts-nameof 但是我无法导入nameof 函数。它不在 d.ts
我试图让检查 null 异常更容易,所以我创建了这个静态方法: /// /// Static method for throwing multiple argument null exception
我正在尝试获取通用接口(interface)上方法的名称。我希望它能工作,因为类型部分是一个有效的类型: //This does not compile nameof(IGenericInterfac
所以我想做的很简单。 我正在尝试对某些基本类型运行 nameof(),因为我需要这些常量来满足特定要求。 但是当我尝试为 nameof(bool) 这样做时,它说 nameof() 在当前上下文中不存
目前对于我的 combobox 绑定(bind),我这样写: comboBox1.DataSource = DataList .Select(x => new { Value = x,
使用 Entity Framework ,我有一个名为权限的实体,它有一组 bool s 指定可以做什么和不可以做什么。 有点像: public class Permissions { publ
我正在尝试获取通用接口(interface)上方法的名称。我希望它能工作,因为类型部分是一个有效的类型: //This does not compile nameof(IGenericInterfac
class Foo { public T Bar() { /* ... */ } } 我想将 Bar 的名字传递给 Type.GetMethod(string) .我可以这样做 someType
在 expressions 上使用 nameof 来提取属性名称是个好主意吗? //method with expression protected void RaisePropertyChanged
我正在试验 nameof 和泛型。我没有得到预期的结果。我不确定这是否是规范的一部分。 class MainClass { public static void Main (string[]
我正在使用 VS 2013 和 .Net Framework 4.6。我想使用新的 C# 6 功能(例如 nameof)。但我找不到它。 我应该使用 VS 2015 吗?还是更高的 .Net Fram
在 C# 6 中,您可以使用 nameof()运算符获取包含变量或类型名称的字符串。 这是在编译时评估还是在运行时通过某些 Roslyn API 评估? 最佳答案 是的。 nameof() 在编译时计
我在我的项目文件中使用 F# 4.7 和 preview。 我有这样的类型: type Record = { Name : string Description : string Fiel
nameof(order.User.Age)只返回 Age而不是 order.User.Age 以更受限制的方式进行操作的原因是什么? 如果我们只想要姓氏,我们可以做类似的事情 public stat
我有一个类的多个实例,我想在一个数组中跟踪这些实例,该数组包含我无法控制的此类类型。为此,我创建了一个 List然后我将其与 MyClass[] 中的每个值进行比较我无法控制。 然后,我使用 C#6.
如果我执行 nameof(instance.SomeProperty),它的计算结果为 "SomeProperty"。 有什么方法可以获得整个方法链 "instance.SomeProperty"?
我对 nameof() 运算符有点困惑。因此,例如我不能在另一个类的 nameof() 中使用类的私有(private)字段,但我可以使用 public 非 static 字段 using non s
我想使用下面的 C#6 代码 var joe = new Self(); Console.WriteLine(joe); ...并获得以下输出: joe 下面的尝试 class Self { pu
我现在正在用 C# 创建一个 ConfigurationSection。我决定通过使用 nameof(PropertyName) 而不是硬编码字符串来利用一些 C# 6 功能。 但是,我从 Resha
我是一名优秀的程序员,十分优秀!