MyEnum.Item.ToString();
nameof(MyEnum.Item);
首选哪种款式?这两者之间有什么实际区别吗?
答案 0 :(得分:12)
第一个是运行时调用,它将在运行时实现它需要返回字符串"Item"
,并且这样做。
第二种方法是将"Item"
直接写入代码。
第二个会稍微快些,但在C#6之前就不可用了。因此,手动将"Item"
放入代码中会导致出现错误的优化,而nameof()
会在编译时捕获到这样的错误。
因此,虽然直接使用该名称的方法可能曾经被认为冒了风险,但这种风险已经消失,并且有一点点优势。
ToString()
仍然是基于MyEnum
类型的变量或表达式输出字符串的唯一方法。
答案 1 :(得分:3)
.ToString()
在运行时进行评估,可以使用your own format进行调用。
nameof()
在编译时进行评估,并将注入一个永不改变的字符串文字。
答案 2 :(得分:2)
如果您没有混淆代码,几乎相同......但是,当您对代码进行模糊处理时,if let nowPlayingInfoDict = MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo
{
let elapsedTimeString = nowPlayingInfoDict["MPNowPlayingInfoPropertyElapsedPlaybackTime"]
}
可能会产生垃圾,而ToString()
会检索您的名称要求/预期。
有关MSDN
的更多信息