.
img
注册时间:--
  • 纯文字版本
    开 关闭
  • 消息
  • 收藏
  • 退出
注意:文章中$$符号只有一个,因程序问题提交后变成了两个。

走进asp.ner第三课

数据类型,就是涉及到数学的东西,如你所知,这节课将是一个不爽的课程。很讨厌数学吧?呵呵。
不过,既然选择了编程,就免不了。计算机,本来就是处理数据的。这节课虽然会很简单,但有些东西还是得费点心思。
每种语言都有它的数据类型,但是事实并非如此,C#并没有它的数据类型,它的数据类型都来自于.net平台,也就是说,基于.net的语言都是如此。这样做的好处,是不言而喻的,拿出你的想象力来吧!
数据类型又分为值类型和引用类型,值类型是一个很直接的概念。记得我说过的堆和栈吗?现在,我可以跟你解析得更直观。值类型都是存储在堆中的,引用类型存储在栈中。也就是说,使用值类型效率比较高。说到这,你可能还不能完全理解,就拿第一课的变量a来说,a这个名称是存储在堆区中的,而它的值
“我的第一个asp.net程序“
却是存储在栈中,当程序要调用它的时候,先要在堆中找到a这个名称,然后再在栈中取出它的值“我的第一个asp.net程序“,之后就交给aspx页显示出来,而这个变量a,它正属于引用类型。
值类型都比较容易理解,这里我介绍一些常用的。
int型,取值范围 -2147483648~2147483647
byte型 取值范围 0~255
long型 取值范围 -9223372036854775808~9223372036854775807
double型 取值范围 1.7E-308~1.7E+308
char 型 取值范围 0~65535
嘿嘿,都是数字。不过,你先不要害怕,我没让你记住这个表,你只需大概知道它们的取值范围就行,谁乐意去记住这个玩意。不难看出,它们都只是一个取值范围,当然,如果没必要用到255以上的数字,你声明为long型,会浪费很多内存资源,这个我就不多说了。我列出的这些(当然不只这几个),除了单精度型double带小数外,其它的都是整数型。字符型char比较特殊,它的取值范围虽然是整数,但我们给它赋值的时候,通常是用Unicode表示法来赋值,如:char c=‘\n0065‘; 这个\n0065其实只是一个字符,不过电脑认识它,我们不认识它而已,呵呵。给char型赋值,我们习惯的方法是直接用一个字符来赋值。如:char a=‘A‘; char abc=‘我‘; 注意,这里用的是单引号,如果用双引号“的话,它就是字符串string型了,这时编译器会报错。单精度型double用于一些比较精确的计算,赋值也很简单,如: double pi=3.14; 当然,还有个小数型decimal,主要用于高精度的商务计算,以及不常用的sbyte,short,ushort,uint,ulong,float等数据类型,这里留给读者去查找相关资料,它们无非就是一个取值范围而已。
如上介绍的都是值类型,它们都是驻留在内存的堆区,嗯,比较直观,其实值类型还有结构类型和枚举类型,不过它们都是比较复杂的,留作以后学习。
还记得声明字符串的string吗?它属于引用类型,引用类型是相当复杂的,它还包括类class类型,对象类型,数组类型,接口,委托。类,还记得怎么声明吗?它其实也属于一种数据类型,不过,在这里我只打算说一下字符串string类型和对象object类型,因为包括我,类,接口,委托等一些数据类型仍然需要继续去学习。
string并不难理解,.net为我们提供了许多实用的方法,如第一课提到的string.IsNullOrEmpty()方法就是用来判断它的值是否为空。这个string很有趣,也很特殊,它可以有两种值,其中string=null;就是给它赋了一个为null的值,也就是没有值,这里要注意,null并没有双引号。null是引用类型的缺省值,当然你要理解为默认值也未尝不可。null表示没有,但是null跟空值是两回事,比如:string a=““;和string a=null;是不同的。这里说的文字性比较强,是有点难理解,没关系,我说这些的目的,无非是让你知道引用类型有个叫做null的值,仅此而已。
对象类型,很容易就想起我说过的面向对象了吧?其实在.net中,一切都可以看作是对象。
声明对象类型的方法:
object a=123;
object b=“大家好!“;
object c=3.14;
object d=‘c‘;
看到了吗?你可以给对象赋给任何类型的值,对象类型的缺省值也是null,再次说说,null表示没有,object a=null;表示对象a还没有值,而object a=““;则表示它已经有值了,你千万不要晕,因为对象类型可以接受任何类型的值是吧?那么object a=““;里的两个“号表示什么呀?字符串,没错,呵呵,你明白了吗?很明显,对象a已经明确有了一个空的字符串的值。
在C#里有两个很有意思的概念,装箱和拆箱。很形象,我在网上找了很多教材,关于这两个概念,都有不同的说法。让我迷惑了好长一段时间,今天,我要告诉大家,其实它们是很容易理解的。先看代码:
int i=12345;
object o=i;
第一句声明了一个int变量i,并给它赋了值,第二句声明了一个对象变量o,并把i的值赋给它。现在,对象变量o就有了个int型的值12345。很好,这时我们叫做把i装箱,也就是打包成了对象。
现在说拆箱,还是先看代码:接上
int j;
j=(int)o;
代码还是很简单,第一句声明了一个int变量j,第二句把对象o的值赋给它。如果你没看错的话,这里有个(int),意思是强制把对象o的值转换为int型,这种做法在行话里叫显式转换。而这个过程就是拆箱机制了,从开始i被装箱成对象o,到现在o被拆箱成int型j,我们完成了一个装箱和拆箱过程,也就是把i又重新转换成int型,这个机制给我们以后的面向对象编程打好了基础,即使你现在搞不懂它有什么用。
拆箱,还需要注意的是,拆箱的过程必须遵循一个规则,那就是你只能拆箱成对象原来的数据类型,比如你要把o强制转换为char类型是错误的,这时编译器会报错。
这节课很不爽对吗?那是没办法的事情,如果你学了这课,一点收获也没有的话,那么很遗憾,这节课是重点,要掌握面向对象实在不是一件容易的事,所以,我希望无论如何,都要尽量理解我所谈到的。
而什么是面向对象,我想现在有必要说一下了。打个比喻,一个人有眼睛,鼻子,耳朵等等。我们把这个人看作是一个对象,当然,他除了有眼睛鼻子,还可以懂得打球,吃饭。当然人还有衣服,手和脚。如果要我们来描述一个人,很显然你会说,他有一双黑色的眼睛,大大的耳朵,当然他还可以是蓝色的眼睛。
如果要我们来描述一个人,那当然是最简单不过了。但是,如果我要让你描述另外一个人,你可以另外写一份草稿。
但是在程序里我们并不需要这么麻烦,我们可以把人相同的特性用class类封装起来,比如,人有眼睛等。
如果要描述另外一个人,我们只需要将眼睛的颜色重新赋值就行了,还是不明白?我还是那句话,没关系,因为你现在还没学到类,你现在只需要建立一个这样的思想就行了。
在学习类,以及类的成员之前,还会有很多内容,比如,运算符,表达式,循环语句等等。也许,现在几节课下来,你已经留下了很多的问题,其实,学习除了要领悟,它不也是一个解决问题的过程吗?说到这里,我要提醒一下大家,欲速则不达,学好基础才是真理呀!
算法,是程序的灵魂,下节课我将介绍变量与表达式,很遗憾的告诉你,下节课将会更加枯燥。我希望你保持平静的心态去迎接它。
good 20

发表评论

文明评论,重在参与

暂无评论!
雷军主讲北京车展发布会!SU7 04-24
互联网汽车是什么?有什么优势呢 04-20
从“中国制造”走向“中国智造” 04-20
中国接入互联网30周年,马化腾 04-20
中国互联网30周年发展座谈会在 04-20
用著作权法来保护软件是否真的有 07-28
杀毒软件:只在搞娱乐,从未杀过 07-28
小谈高通反垄断 07-28
印度将推出百元智能机 山寨厂商 07-28
高通垄断之痛:不是国产手机大而 07-28
一张图读懂阿里巴巴眼花缭乱资本 07-28
滴滴打车副总裁张晶离职 高层换 07-28
返回Net教程-返回首页
AD