首页 > 开发 > 综合 > 正文

Questioning C# (三)

2024-07-21 02:19:23
字体:
来源:转载
供稿:网友
q:今天我的侄子问我1+1等于多少,我说当然是2咯,他很狡猾的笑着说我错了,然后我问他为什么错,他瞄了我一眼说:“根本无法确定一个唯一的答案,在数学上你可以很确定的说是2,不过我并没有限定范围哟!”那一瞬间我想个傻子被他嘲弄了一番。

a:哈哈。看来你的侄子的确聪明过人。没错,没有限定范围,我们当然无法给出一个确定的答案,这也跟我们今天的话题——类型和类型系统有关。

q:不会吧?跟我们的c#话题有关??怎么个有关法?

a:嗯,这样吧,我问你,要使得1+1的结果有效,我们至少要为这两个“1”限定一些什么条件?

q:他们应该具有可加性。

a:在具体一点!

q:嗯,他们应该是同一类别的。

a:对!非常对!就是同一类别,我们总不能要求一个苹果加上一台风扇会有满意的唯一的结果吧!同样的道理,我们要使得相关的式子在电脑上有效,至少我们要限定每一个被操作的因子都是可以归为某一个类别的。这就导出了类型(type)。

q:那么,这个跟c#的类型有什么联系呢?

a:这样吧,我们不说1+1了,我们说说你老婆每个月的家庭财政管理工作。我敢肯定,你老婆不会愚蠢到把数字跟物品混在一起计算收支的情况,她肯定会把相关的物品先进性换算,而实际上,我们每个人在处理财务工作的时候,都统一使用以货币为单位的数字,对吗?假如你这个月收入10000元,支出5000元,那么你可以很快地得出结论,你们这个月有5000元可以存入银行。但这等事怎么在电脑里,我的意思是在c#里面表达呢?电脑没有我们那么聪明,知道10000-5000=5000,因为它不能够从这个简单的式子里面知道这些数字是什么类型的。于是,我们就要首先告诉他这些数字的类型!

q:那么,我们怎么告诉c#这些额外的信息呢?

a:这个很简单,我们计算的时候有小数的吧,在电脑里面叫做浮点数,我们只要告诉电脑,这些是浮点数,再告诉他这条式子,它就会给出结果我们的了。别的不说,我们先来看看代码:
double incoming = 10000.00;
double outgoing = 5000.00;
double result = incoming - outgoing;
然后你得到的result就是算出的结果:5000了。

q:这些incoming、outgoing、result等,是什么来的?double又是什么来的?

a:首先,double是指双精度浮点数,你目前知道它是一种精度高的浮点数就行了,与它对应的是精度低的单精度浮点数float。而incoming、outgoing、result这三个东西是变量(variable)。变量是用来储存信息的,以便我们后面的操作使用的。上面的代码就等于先告诉电脑:我这个月的收入是10000元,支出是5000元,我现在要你给我计算出我这个月剩下多少钱。

q:噢,我明白了。那么,上面的代码可以运行吗?

a:还不行,因为这个仅仅是一个代码片断,不过要运行的话,我们只需要把这个片断跟之前的helloworld结合一下就行了,结合后的代码是:

class printresult
{
static void main()
{
double incoming = 10000.00;
double outgoing = 5000.00;
double result = incoming - outgoing;

system.console.writeline(result);
}
}

还记得system.console.writeline(...);这句话吗,它的作用就是用来向命令行界面输出东西的,这次我们不输出hello, world! 而改为输出result。现在,你把这个代码保存为printresult.cs,然后去到命令行提示符,转到printresult.cs所在目录键入csc printresult.cs进行编译,最后键入printresult运行一下!

q:好,我明白了,不过我有一个问题想问问,为什么helloworld程序和我老婆的财务工作加起来?他们同一类型的吗?:)

a:-_- ...



发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表