Die "richtige" Antwort hängt meiner Meinung nach davon ab, wie und warum Sie die Zeichenfolge verwenden.
Wenn die Zeichenfolge zur Anzeige verwendet oder einem Benutzer angezeigt wird, ist die Eigenschaft ein besseres Design. Dies macht es viel einfacher, die Lokalisierung später hinzuzufügen, indem Sie die Konstante in Ressourcendateien verschieben, ohne die API ändern zu müssen. Dies macht es auch einfacher, Ihre Klasse anzupassen, ohne anderen Code zu brechen, da Sie die "Konstante" jederzeit ändern können, ohne andere Assemblies zu beschädigen.
Ich finde selten geeignete Verwendungen für den zweiten Fall - sehr wenige Zeichenfolgen sind wirklich konstant, und wenn sie sind, glaube ich, dass sie in der Regel besser als eine Aufzählung statt einer Zeichenfolge dargestellt werden. Dies ist fast immer besser als "magische Zeichenfolgen" in Ihrem Code. Die seltenen Ausnahmen bestehen normalerweise bei der Interaktion mit Legacy-Code. Wenn Sie mit einer separaten API arbeiten, die eine Zeichenfolge erwartet, und die Zeichenfolge wirklich konstant ist, ist die Verwendung einer Konstante möglicherweise "besser" ist in seiner Absicht effizienter und sehr klar.
Denken Sie auch daran, dass die beiden Ansätze miteinander kombiniert werden können:
private const string employeeString = "Employee";
public string EmployeeString { get { return employeeString; } }
Auf diese Weise können Sie die Konstante verwenden, es ist Absicht klar, was aber leicht dies später zu ändern, ohne einen anderen Code zu brechen oder das Ändern Ihrer API . (Ich persönlich bevorzuge dies zu Ihrer "zweiten" Option oben, da die magische Zeichenfolge in der Eigenschaft Getter ist ein Code-Geruch für mich - ich mag meine Konstanten, um offensichtliche Konstanten sein, aber immer noch Eigenschaften bevorzugen.)
Große Rückmeldung. Ich werde nicht für die UI-Ebene verwenden, sondern versuche, APIs zu verwenden, die Zeichenfolgenparameter für Parameter benötigen. – user118190