请选择 进入手机版 | 继续访问电脑版

 找回密码
 注册
搜索
楼主: garyng

[讨论] [24-11-2013] C# 新手入门教程——更新至教程#10   [复制链接]

Rank: 3

帖子
313
学币
1285
学分
278
贡献
0
贝壳
10
文采
0
garyng 发表于 2013-11-24 15:07:26 |显示全部楼层
本帖最后由 garyng 于 2013-11-24 15:07 编辑

恩!


很好!


但是还能更好!


Message Box 返回的value 是一个 DialogResult


像这样:



DialogResult 里面有很多成员(members),我们要的是Yes:



然后显示一个MessageBox:



当然别忘了处理用户按了 No 按钮:



F5 编译运行后,你会发现竟然有2个MessageBox 跳出来!


为啥?


因为我们打了2次MessageBox.Show啊!


所以要用变量!变量!


你:MessageBox 返回是什么类型的啊?


我:就是DialogResult啊!


所以我们的变量类型是DialogResult!(有点点奇怪对吧?)





然后把两个if 里面的 MessageBox.show 换成 msg 变量:





完美运行!






PS: 我是不会让你知道其实还有更简单if.. else.. 写法!




部落格:http://garyngzhongbo.blogspot.com

使用道具 举报

Rank: 3

帖子
313
学币
1285
学分
278
贡献
0
贝壳
10
文采
0
garyng 发表于 2013-11-24 15:08:25 |显示全部楼层
看原帖请点我【if..else】

之前我们用了两个if来检查MessageBox.Show 返回的值


你:有木有不打两个if 的方法?

我:没有..

你:一巴掌(啪

但是你可以用if .. else .. 来判断(你还是需要用到两个if,但是整个代码的结构会比较清晰)

之前的代码的运作流程是:

1、先检测msg是否为Yes,如果是,运行代码

2、不管之前的检测是不是Yes,检测msg是不是No,如果是,运行代码

有没有发现到,两个if,代表msg 始终 被检查了2次

但是如果msg 等于Yes的话,就代表他不会等于No,那我们只需要检查一次就够了

所以if .. else

在这儿就很好用了!

改进版的代码:


现在的代码流程就变成了

1、如果msg等于Yes,Messagebox显示Yes,然后整个if 结构运行完毕

2、如果msg 不等于Yes , MessageBox 显示No, 整个if 结构运行完毕

现在最少只需要检测1次就行了!


【if .. else if .. else】

在form 上加上一个textbox

然后在button 的 click event handler 之中清除之前的代码


现在我们要的是:

1、检测textbox1之中的text是不是等于Hello,如果是的话,Messagebox 显示Hi
2、检测textbox1之中的text是不是等于Bye,如果是的话,Messagebox 显示Goodbye
3、如果都不是Hello或者Bye,Messagebox 显示 I don’t understand

现在这里有3个条件了!

所以 if .. else 不够用了

用if .. else if .. else吧!

if .. else if .. else 很像多个if 一起用

但是结构会比较清晰

现在我们先用多个if 来实现

然后运行试试看:


但是如果不是Hi或者是Bye,却没有输出!

你:直接在if最下加入mesagebox 就好了嘛!

聪明!



但是一样的,多个if 就等于要有多个检测!

所以我们改成用if .. else if .. else 的话就变成了

如果是Hello,messagebox显示 Hi

如果是Bye ,messagebox 显示 Goodbye

如果都不是Hello 或者bye,Messagebox 显示 I don’t understand


部落格:http://garyngzhongbo.blogspot.com

使用道具 举报

Rank: 3

帖子
313
学币
1285
学分
278
贡献
0
贝壳
10
文采
0
garyng 发表于 2013-11-24 15:09:01 |显示全部楼层
本帖最后由 garyng 于 2013-11-24 15:09 编辑

看原帖请点我

之前介绍了if..else if .. else 结构

你;switch 又干嘛的?

我:恩..很简单,就像if .. else 的结构代替品,在特定的情况下,你可以打更少的代码!

你:例子例子!

现在在你的Form上加入一个TextBox 和一个 Button


双击button1(还记得event handler 么?)

现在你需要检测textbox1 的 text

1、如果是Hi,messagebox就显示Hello!
2、如果是Bye,messagebox 显示Bye!

(很像之前的if..else之中的sample吧?)

如果用之前的if..else 写的话:

写很多个 是不是很不爽?

现在看看switch 怎么写:

switch ()括弧中间就是你要检测的东西

这里就是 textbox1的text

然后{}里面呢,就是各种不同的情况(case)

case 跟着需要的情况,然后在加上一个冒号

而下一行就是需要运行的代码

这里就是messagebox显示Hello!

但是不要忘了break

break 就是

检测完这一个case后,直接跳出switch,不要在做任何检测

要清楚的解释这个

我们加入几个messagebox

然后运行试试看

首先输入Hi

点击Button后就会看到我们的messagebox Hello跳出来

点击Ok之后,你猜猜会出现什么?

After Switch!

清楚break的功用了吧?

你:我们的Bye情况呢?

一样!

现在我们来试试看

输入Hi,显示Hello

输入Bye,显示Goodbye

但是你乱输入的话

却什么都没有显示

你:为什么?

因为我们的switch没有这个case!

你:可是 if .. else 会handle 这种情况啊..

当然!switch 也能

如果所有的 case 都不符合的话

switch 会直接运行default内的代码:

不符合所有的case 的话

就会直接执行messagebox 显示 blablabla


当然

switch 不一定要string

什么类型都可以的!

比如:


部落格:http://garyngzhongbo.blogspot.com

使用道具 举报

Rank: 3

帖子
313
学币
1285
学分
278
贡献
0
贝壳
10
文采
0
garyng 发表于 2013-11-24 15:09:55 |显示全部楼层
本帖最后由 garyng 于 2013-11-24 15:11 编辑

看原帖请点我

你:要怎么做加减乘除啊?

其实很简单

照着写就好了!


先加入一个button 和一个 textbox

双击button进入event handler


你:我要2+3的结果出现在textbox1里面!

就这样:

但是你会发现到又报错了?

为啥?

很简单

因为

int 不能直接转换为textbox 可以接受的 string

所以我们来转换

还记得用什么么?

.ToString()!

如果你要更加简单的方法:

也行

运行看看:

点击button


现在你懂+是sum了

那减乘除呢?

就是-、*和/咯!

像这样:


但你点击divide 的时候

你得到的结构却是:

0!

为什么?

因为integer不能包含小数点!

所以我们将它换成一个Double:

或者你可以直接这样(suffix)

这里的D就代表2和3是一个double

然后结果就是:


Suffix列表:


Long
L
Double
D
Decimal
M
Float
F
Unsigned Int
U
Unsigned Long
UL

现在又有另一个情况:

如果 a = 4

然后你要 a+5 并把结果储存回 a

你可能会这样写:

但是

不觉得写两个a很费力么?( xD )

简短的方法:

你一样会得到8!



【文接下楼】


部落格:http://garyngzhongbo.blogspot.com

使用道具 举报

Rank: 3

帖子
313
学币
1285
学分
278
贡献
0
贝壳
10
文采
0
garyng 发表于 2013-11-24 15:11:12 |显示全部楼层

同样的

也可以用在加减乘除上:

4+4

8-3

5*2

10/5


还有就是你只要将a增加1的话,你可能这样写:

但是还有更加简便的方法!

a++就是a+1

还有也可以--

就是a-1

也可以放在前面

++a

--a

结果:

4+1

5-1


但是++或--放在前面和后面有分别!

我们来看看这样的代码:

运行的话:

你会发现v还是4

a却是5

为什么?

因为++在后面是post increment

就是说

int v = a++ 中

它会先让v 等于 a

然后才让a = a+1

如果把++放在前面就不同了:

a 和 v 的值都是一样的

因为在 int v = ++a中

它先往a + 1

然后赋值给v

部落格:http://garyngzhongbo.blogspot.com

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

Archiver|手机版|xuehaiblog

GMT+8, 2020-4-7 15:17 , Processed in 0.021385 second(s), 8 queries .

Powered by Discuz! X2

© 2001-2011 Template By Yeei. Comsenz Inc.

回顶部