学习完了C#后,有种眩晕的感觉。然后回过头来看了看笔记,又想了想VB,两者的相同之处还是挺多的。然后 就小结一下,以梳理我这混乱的思路。
第一:数据类型
C#:
通过图可以看出来,C#数据类型分为两大类,一个是值类型,另一就是引用类型。
1.值类型:一种由类型的实际值表示的数据类型。如果向一个变量分配值类型,则该变量将 被赋以全新的值副本。当定义一个值类型的变量时,C#会根据所声明的类型,以栈 方式分配一块大小相适应的存储区域给这个变量,随后对这个变量进行读和写操作。
例如:下面的例子,首先先在堆栈中分配一个32位的存储区域给变量num,并且将5放入这 个内存区域中,随后,从变量num中取出值,加上10,再将计算结果赋给sum。
int num=5
sum=num+10
2.引用类型:引用类型跟值类型不同,值类型存储的是一个实际数据的量,引用类型储存的 是地址而不是值。因为引用类型储存的时对象的地址,不是值,所以不同可以储存相 同的地址,而且一个变量的改变不会影响另一个的值。
创建引用类型一般包括这两步:首先,在堆栈上创建一个引用变量;然后,在堆上创建对 象本身,再把这个内存的首地址赋给引用变量。
string A,B;
A=“hello world”;
A=B;
在这里String是一个引用类型,A,B分别是指向字符串的引用变量。A是字符串“hello world”存放在 内存中的一个地址。两个引用型变量(A,B)之间的赋值,使得他们两个都是对"ABCD"的引用同时一 个变量的改变不会影响另一个变量的改变。
注意堆和栈的区别:
栈它用于存储固定长度的数据,同时要遵循“先进后出”的原则,每个程序在执行时都有自己的堆栈,其他程序不能访问该堆栈。
堆是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,但是他可以储存长度变化的数据,存按任意顺序和大小进行分配和释放内存,用起来是最方便的
但是vb同C#比起来,数据类型的分类与应用就没有这没麻烦。就简简单单的几种类型:数值型,字符串型,布尔型,日期型。每一种类型的数据占用一定数量的储存空间,表示的值也有一定的范围。
二.常量与变量
常量:
C#:
常量:顾名思义就是在程序运行中其值不改变的量。
常量的数据类型:long,bool,char,string等
常量分类:直接常量(直接使用的数据常量)
符号常量:(直接用一个自定义的符号名来代替数据常量)
固有常量:.net提供的常量,如:Color.
命名常量用关键字const声明和初始化.命名规则
[修饰符] const 数据类型 常量名=常量表达式
修饰符:public ,private
VB:
VB中常见的常量有整型常量,长整型常量,单精度型常量,双精度型常量,货币型常
量,字节型常量,字符串型常量和日期型常量
常量命名规则:
[private/public] const<常量名>[AS 数据类型]=表达式
例:
Pulic Const conPI AS Single=3.1415 ‘声明单精度型符号
通过两种不同语言,对常量的声明来看,还是大同小异,声明的方式基本类似,但是
应该能看出C#的代码量要比VB的少。
变量:
相同之处:
命名规则
1.不能包含特殊字符
2.不能有语言中的关键字
3.一条变量声明中,可声明多个相同类型的变量.
4.在同一作用域中,变量名不能重复
但是他们在细微之处还是有不同点的。C#在命名的时候,变量名必须以字母,或者下划
为开头,但是VB的变量名是必须以字母或者汉字开头。
作用:
命名空间级,类级,局部,块级
C#:
局部变量:声明位置在窗体或类所包含的方法内位置声明,只能该方法内使用,
使 用修 饰符:public,private,static
块级变量:声明位置在语句块(大括号范围内),只能由该语句块内使用。不能使
用 publicprivate static
类级变量:声明位置在窗体或者类的顶部声明。用修饰符public,private声明,在该
体或其他类的方法使用。
静态变量:使用关键字static声明,即使对象被撤销,静态变量仍然在内存中保存。
修饰符:
public:都可以访问
private:私有,只有自己可以访问
protected:只有继承关系的可以访问
VB:
过程级变量(局部变量),在过程中声明,并且只能在该过程中声明。
模块级变量:是指声明的变量所在的模块中的所有过程可以访问的变量。但是一个模
块中的过程不能访问其他模块中的模块级变量
应用级变量:又为全局变量。应用程序中的所有模块对其都可以访问。
作用域:
过程级变量:Dim或Static
模块级变量:Private或Dim
全局变量:Public
通过这些,我们也会看出一点点的不同,在Vb中没有块级变量,块级变量是针对C#中一个语句 块,比如for循环语句块,在{}中也许就定义这要用到的变量,但是在Vb中也许就将其在局部变量中声明 了。因为Vb中有语句块,没有{}以供我们写不同的语句块,只有一个
public Sub……..End Sub.这其中 写上对应的过程。其他的区分语句块就要看我们的书写格式了。
两者在一些语法上也有不同之处。
比如:在异常处理的时候两者存在不同之处:
VB:中常常用onerrorgoto
line: 来让程序出错时跳到line:这一行。而C#中提供了更多的方法。
C#:为了处理可能的情况,一般把程序的相关部分分为三种不同类型的代码块:
Try块包含的代码组成了程序的正常操作部分
Catch块包含的代码处理各种错误
Finally块包含的代码清理资源或执行要在try块末尾执行的其它操作。
对比的学习,也是对以前知识的一个回顾,学习就是温故而知新!
本文对比了C#和VB在数据类型、常量与变量方面的异同。C#的数据类型分为值类型和引用类型,而VB的数据类型更为简洁。在常量声明上,两者方式类似但C#代码更简洁。变量方面,虽然命名规则有相似之处,但C#有块级变量,VB则没有,同时C#的变量修饰符更为丰富。
1493





