In C# 6 gibt es einen "nameof" -Operator (https://msdn.microsoft.com/library/dn986596.aspx). Hat D ein Analogon? Oder ein Konstrukt, um es zu emulieren?C# -Stilname des Operators in D?
6
A
Antwort
10
Ich glaube, stringof
funktioniert auf die gleiche Weise. Zum Beispiel dieser Verbindung ein D analog zu dem ersten C# Beispiel an ist:
void f(string s) {
if (s == null) throw new Exception(s.stringof ~ " is null!");
}
auch dort std.traits.fullyQualifiedName
ist. Es tut, was es auf der Dose sagt:
module mymodule;
import std.traits : fullyQualifiedName;
class MyClass { int myvar; }
pragma(msg, MyClass.myvar.stringof); // myvar
pragma(msg, fullyQualifiedName!(MyClass.myvar)); // mymodule.MyClass.myvar
Wie das erste Glied weist darauf hin, fullyQualifiedName
für besser geeignet sein kann, die Codegenerierung Compile-Zeit, wo es so genau wie möglich zu sein, hilft mit lokalen Symbolen zu vermeiden clashing .