MyEnum.Item.ToString() 和 nameof(MyEnum.Item) 有什么区别?

本文关键字:MyEnum Item 区别 什么 ToString nameof | 更新日期: 2023-09-27 18:35:25

MyEnum.Item.ToString();
nameof(MyEnum.Item);

哪种风格更受欢迎?两者之间有什么实际区别吗?

MyEnum.Item.ToString() 和 nameof(MyEnum.Item) 有什么区别?

第一个是运行时调用,它将在运行时意识到它需要返回字符串"Item",并这样做。

第二种是将"Item"直接写入代码的另一种方法。

第二个会稍微快一些,但在 C#6 之前不可用。因此,手动将"Item"放入代码中是一种优化,可能会出错,而nameof()会在编译时捕获此类错误。

因此,虽然直接使用该名称的方法可能曾经被认为是冒险的,但这种风险已经消失,并且略有优势。

ToString()仍然是基于 MyEnum 类型的变量或表达式输出字符串的唯一方法。

.ToString()

运行时进行评估,可以使用您自己的格式调用。

nameof()在编译时计算,并将注入永远不会更改的字符串文本。

如果你没有混淆你的代码,几乎是一样的......但是,当您混淆代码时,ToString()可能会产生垃圾,而nameof()将检索您请求/期望的名称。

有关 MSDN 的详细信息