D 中的 C# 风格的 nameof 运算符?

C#-style nameof operator in D?

C# 6 (https://msdn.microsoft.com/library/dn986596.aspx) 中有一个 "nameof" 运算符。 D有模拟吗?或者一些模仿它的构造?

我相信 stringof 的功能大致相同。例如,第一个 C# 示例的 D 模拟 link 是:

void f(string s) {
  if (s == null) throw new Exception(s.stringof ~ " is null!");
}

还有std.traits.fullyQualifiedName。它按照罐头上的说明进行操作:

module mymodule;

import std.traits : fullyQualifiedName;

class MyClass { int myvar; }

pragma(msg, MyClass.myvar.stringof); // myvar
pragma(msg, fullyQualifiedName!(MyClass.myvar)); // mymodule.MyClass.myvar

正如第一个 link 指出的那样,fullyQualifiedName 可能更适合编译时代码生成,它有助于尽可能具体以避免与本地符号冲突。