当前位置: 首页 > 知识库问答 >
问题:

为什么我应该使用枚举而不是字符串?[副本]

袁雅逸
2023-03-14

为什么这是“良好的编码实践”?例如,当我制作一个石头剪刀游戏机时,大多数人建议使用枚举而不是字符串。有什么区别?

共有3个答案

白浩荡
2023-03-14

第一个枚举只是数字的标签。这意味着,当你的代码呈现纸、剪刀和石头时,程序会看到1、2和3。计算机在阅读和记忆方面没有问题,但人类有,所以你的代码会读纸质的,而计算机会看到1比3。从性能的角度来看,这很重要。

名单也是有限的。使用枚举意味着您只能拥有这三个值中的一个,否则它将无法编译。使用字符串意味着您的代码必须在运行时不断检查是否相等,因此代码会变得臃肿、缓慢且容易出错。

潘弘扬
2023-03-14

请检查此详细说明

枚举类型(也称为枚举或枚举)提供了一种有效的方法来定义可分配给变量的一组命名整数常量

http://www.codeproject.com/Articles/18809/Enums-in-C

濮阳旭东
2023-03-14

这只是让编译器为你工作的方法之一。如果使用字符串,编译器无法帮助您发现值中的错误:

if (move == "rokc") { // just never matches

但是如果你使用枚举,编译器只允许你使用有效的值:

if (move == Moves.Rokc) { // compilation error
 类似资料:
  • 问题内容: 从log.go(执行日志包): 只是一个函数包装器,为什么我应该用它代替or ? 有实际原因吗? 问题答案: 两件事不同: 通过包日志进行打印对于并发goroutine是安全的(而普通的则不是) 日志可以自动添加计时信息。 因此,这是两件完全不同的事情。log用于记录和格式化。(好吧,log使用相同的动词和标志,但这很方便)。

  • 问题内容: Python 2.6引入了一个功能。 为什么有这个必要?可以总是输入而不是。 后者更多吗? 问题答案: PEP 3114描述了此更改。动机摘录: 该PEP建议将该方法重命名为,与Python中所有其他协议一致,在该协议中隐式调用方法作为语言级协议的一部分,并引入一个名为的内置函数来调用方法,与显式调用其他协议的方式。 请务必阅读此PEP,以获取更多有趣的细节。 至于为什么 你 要使用内

  • 问题内容: 在.NET Framework 的参考中,使用type 声明请求类型。 在RFC 2616 中,声明了所有HTTP请求方法(例如POST,GET,PUT,DELETE …)。 .NET 和类中也存在类似的行为。 Java在方法上有类似的方法。 这些语言设计者为什么不考虑为这些HTTP方法实现枚举? 你有好主意吗? 问题答案: RFC 2616 链接的第一句话(添加了重点): HTTP

  • 我知道这已经被问了很多次了(实际上,很多!),但是我仍然不能完全理解这两者之间的主要区别是什么。 我知道一个服务返回所提供函数的一个单例实例,工厂将简单地调用该函数并返回其值。 但是... 在我看来,你可以用一个或另一个来实现相同的效果,那么我应该如何选择使用哪一个呢?为什么我应该选择服务而不是工厂,或者相反? 是否存在这样一种情况:一方可以做另一方不能做的事情?

  • 问题内容: 我现在已经实现了一些Java应用程序,到目前为止仅实现了桌面应用程序。我更喜欢使用不可变对象在应用程序中传递数据,而不是使用带有变量(setter 和getter )的对象,也称为JavaBeans。 但是在Java世界中,使用JavaBeans似乎更为常见,而且我不明白为什么应该使用JavaBeans。就个人而言,如果代码仅处理不可变的对象而不是始终改变状态,则代码看起来会更好。 在