C#与VB的基础比较

本文对比了C#和VB在数据类型、常量与变量方面的异同。C#的数据类型分为值类型和引用类型,而VB的数据类型更为简洁。在常量声明上,两者方式类似但C#代码更简洁。变量方面,虽然命名规则有相似之处,但C#有块级变量,VB则没有,同时C#的变量修饰符更为丰富。

      学习完了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分配的内存,一般速度比较慢,而且容易产生内存碎片,但是他可以储存长度变化的数据,存按任意顺序和大小进行分配和释放内存,用起来是最方便的


但是vbC#比起来,数据类型的分类与应用就没有这没麻烦。就简简单单的几种类型:数值型,字符串型,布尔型,日期型。每一种类型的数据占用一定数量的储存空间,表示的值也有一定的范围。


二.常量与变量


            常量:


                        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块末尾执行的其它操作。


对比的学习,也是对以前知识的一个回顾,学习就是温故而知新!



评论 22
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值