c#中没有枚举卡有什么好处吗?

本文关键字:什么 枚举 | 更新日期: 2023-09-27 18:10:36

我将在c#中为扑克游戏创建一个纸牌类。所有与纸牌相关的必要行动都将在其他类别中执行,如桥牌、手牌或组合。我应该为rank和suit使用什么类型的字段,stringenumint?不使用枚举有什么好处吗?

c#中没有枚举卡有什么好处吗?

等级和花色我都选enum

为什么?

  • 代码的可读性。在创建类的新实例时,您可以这样创建它:

    var card = new Card{ Rank = Rank.King, Suit = Suit.Hearts}

  • 更不容易出错-如果suit是int,您可以在int.MaxValueint.MinValue之间放置任何数字,但只有一些值将具有意义。如果你在代码的某个地方写了11而不是10,那么你的桥牌突然有了5张国王,你就可以试着找到这个小bug了。

  • 不要害怕内存使用- enum只是一个好看的整型,正如Anders Forsgren在回答中提到的。如果你只需要8个值,你可以将它设置为byte,这将占用大约一个字节的内存。考虑到你正在使用c#,这是可以忽略不计的。取值为:bytesbyteshortushortintuintlongulong

所以,保持它的enum和更好看,更少出错,更快的代码。

Enum显然是具有有限选项的值类型的选择。卡片的等级和花色非常符合这些标准。

枚举可以被认为是整数的语法糖,因此在性能方面,它与使用简单整数相同。如果不是使用枚举,那么

没有任何好处。

我认为枚举是最优的。整数在性能方面也会有类似的表现,但是使用enum提高了可读性,也使得分配非法值变得更加困难。