将枚举转换为整数是否耗费大量资源?

11

枚举类型是值类型并且内部表示为整数,将它们强制转换为int类型是否比通常的强制转换更省资源?

如果速度更快,是否因为它是值类型而不是引用类型?


6
为什么不测量它? - spender
2
请阅读Jon Skeet在此处的答案:https://dev59.com/KnA75IYBdhLWcg3wg5Vh - lahsrah
1
在阅读Jon Skeet的答案之后,可以阅读Eric Lippert的博客文章:http://ericlippert.com/2012/12/17/performance-rant/ - Alden
我想说,比起询问(微不足道的)类型转换成本而没有明确问题,你花费时间在更高层次的问题上会更值得。应该一直为了代码的清晰而编写代码,而不是为了节省一些无法衡量的时间而使代码变得复杂。你最终会得到一些复杂的代码,这些代码可能并不会运行得更快。很难知道你的代码将在哪里“运行缓慢”。不要尝试猜测,等你编写出正确的代码后再进行测试和优化。 - spender
你可能对过早优化有一种不健康的痴迷,或者你们班正在学习与该主题相关的内容。如果是前者,请先学会编写代码,进行分析,然后优化代码中实际的瓶颈,而不是担心这些无关紧要的问题。(任何在我手下浪费时间在愚蠢的不必要的代码优化上的人都不会长久;有更有成效的事情可以做。)如果是后者,请先完成作业,而不是在这里提问并等待我们回答。 :-) - Ken White
1个回答

15

不可以,因为它内部存储值的方式。C# 几乎没有开销。强制类型转换中的开销主要是由于需要进行从一种类型到另一种类型的转换所需的代码量,是否需要创建新对象并分配内存等。


3
补充一下这个答案,通过枚举转换访问数组和通过常量整数访问数组的IL代码看起来是完全相同的。可以参考这个代码片段:https://sharplab.io/#gist:50a591ac8fbbee37727e26a2086531e3我不知道是否适用于每种情况,但我认为我不是唯一一个关心这个特定问题的人。 - Daniel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接