MyEnum.Item.ToString() 和 nameof(MyEnum.Item) 有什么区别?
本文关键字:MyEnum Item 区别 什么 ToString nameof | 更新日期: 2023-09-27 18:35:25
MyEnum.Item.ToString();
nameof(MyEnum.Item);
哪种风格更受欢迎?两者之间有什么实际区别吗?
第一个是运行时调用,它将在运行时意识到它需要返回字符串"Item"
,并这样做。
第二种是将"Item"
直接写入代码的另一种方法。
第二个会稍微快一些,但在 C#6 之前不可用。因此,手动将"Item"
放入代码中是一种优化,可能会出错,而nameof()
会在编译时捕获此类错误。
因此,虽然直接使用该名称的方法可能曾经被认为是冒险的,但这种风险已经消失,并且略有优势。
ToString()
仍然是基于 MyEnum
类型的变量或表达式输出字符串的唯一方法。
.ToString()
在运行时进行评估,可以使用您自己的格式调用。
nameof()
在编译时计算,并将注入永远不会更改的字符串文本。
如果你没有混淆你的代码,几乎是一样的......但是,当您混淆代码时,ToString()
可能会产生垃圾,而nameof()
将检索您请求/期望的名称。
有关 MSDN 的详细信息