- 1、本文档共78页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
HeadFirstC中文版第八章.
Head First C# 中文版 第八章
连载地址:/cuipengfei1
SWPU崔鹏飞翻译,欢迎提出其中的错误。
不鸣则已,一鸣惊人。
在真实的世界中,你不会只处理少量的数据。数据会成堆、成群地向你汹涌而来。你需要有有力的工具来处理数据,这时集合就派上用场了。集合可以存储、排序、管理你的程序需要的数据。这样,你只需写程序来操作数据,而数据的存储就交给集合吧。
不要总是用字符串来存储分类的数据
假设Worker类表示工蜂。你会如何给它写一个构造方法来接受代表工作的参数呢?如果你用字符串来代表工作,你的代码有可能会写成下面这样:
或许你可以在Woker类的构造方法中添加代码来检查代表工作类型的字符串。但是如果你要让蜜蜂掌握一些新工作,那你就需要修改检查代码并重新编译Woker类。这是相当短视的解决方案。如果有别的类也需要检查蜜蜂工作的类型怎么办呢?那就会造成冗余代码,此路不通。
我们需要一种方式来表达出这样的意思:“嘿,只有某些特定值在这儿才是合法的。”我们需要枚举出可以使用的值。
枚举类型让你可以枚举出有效值
枚举是一种只允许某些特定值的数据类型。所以我们可以定义一个叫做Jobs的枚举,并定义蜜蜂可以做的工作:
现在你可以这样使用枚举了:
你不可以给枚举胡乱编一个值。如果你那么做,程序会无法编译。
枚举让你可以给数字取一个名字来代表它
如果数字有名字的话会更容易操作。你可以把枚举中的值赋为数字并用名字来引用数字值。这样你的代码中就不会出现一大堆意义不明的数字了。下面是一个用来给狗狗比赛计分的枚举。它处于DogCompetition类内部,所以如果你要在类外部使用它的话,就要称它作DogComptition.TrickScore。
你可以把枚举转型为数字并用它来做计算,或者你也可以用ToString()方法来把它当做字符串来对待。如果你没有给某个名称分配任何值,枚举中的项将会获得默认值。第一项会被赋值为0,第二个是1,等等。
但是如果你想要给某个枚举项赋值为一个很大的数字会怎么样呢?枚举中数字的默认类型是int,所以你需要用冒号来这样指明类型:
用你学过的关于枚举的知识来创建一个扑克牌的程序。
①创建一个新项目并添加一个Card类
你会需要两个公有字段:Suit(代表花色,可以是Spades,黑桃;Clubs,梅花;Diamonds,方片;Hearts,红桃)。还有Value(代表牌的大小,可以是A,2,3......10,J,Q,K)。你还需要一个只读属性Name(它的值可以是黑桃A,方片5)。
②用两个枚举来代表花色和牌的大小
确保(int)Card.Suits.Spades的值是0,然后是Clubs等于1,Diamonds等于2,Hearts等于3。让Value的值等于牌面的大小:(int)Card.Values.Ace等于1,Two等于2,Three等于3,等等。Jack等于11,Queen等于12,King等于13。
③给牌的名字添加一个属性
Name应该是一个只读属性。它的get访问器会返回一个描述牌的字符串。下面的代码将会在窗体中调用Card类的Name属性,并把它显示出来:
④在窗体上添加一个按钮,让它弹出一个消息框来显示随机一张牌
你可以通过把一个0到3的随机值转型为Cards.Suits,还把一个1到13之间的随机值转型为Cards.Values来创建一张随机的牌。你可以通过内建的Random类来做这件事,你有三种方式来调用它的Next()方法。
问:等一下。当我键入上面的代码的时候,我注意到一个智能感应窗口在我用Random.Next()方法的时候弹出来说什么“3 of 3”。这是什么意思?
答:这就是重载了。一个方法有多种被调用的方式就叫做重载。使用重载方法的时候,IDE会给出你所有可能的选择。在这儿,Random的Next()方法有三种调用方式。你一旦键入“random.Next(”,IDE就会弹出智能感应窗口来提示你。现在不用太关心重载的问题,本章后面我们会讲的。
一副扑克是可以证明受限的值的重要性。没人会希望翻过牌来发现是一张梅花王,或者是一张红桃13。我们如下写Card类。
我们可以用数组来创建一副牌...
如果你想要创建一个类来代表一副牌怎么办?那就需要存储一副牌中的每一张牌,还需要知道牌的顺序。数组可以做到这一点--一副牌中顶上的位序是0,下一张是1,等等。下面开始--52张牌全在的一副扑克。
...如果想要做更多的事情怎么办呢?
想想你会用一副牌做什么呢?如果
文档评论(0)