在看C#视频的时候,感觉这老师讲的很乱,还好前面有VB作为基础。只要还记得我们去年讨论的VB总结,那么在看C#视频的时候,就会感觉到很熟悉。看完视频之后,就特别有一种欲望,将C#和VB进行比较。
1.数据类型
C#包括两种变量类型:值类型和引用类型
1.值类型:值类型就是一个包含实际数据的量。当定义一个值类型的变量时,C#会根据所声明的类型,以堆栈方式分配一块大小相适应的存储区域给这个变量,随后对这个变量进行读和写操作。
例如:下面的例子,首先先在堆栈中分配一个32位的存储区域给变量a,并且将10放入这个内存区域中,随后,从变量a中取出值,加上10,再将计算结果赋给a。
Int a = 10
A = a +10
2.
引用类型:
引用类型跟值类型不同,值类型存储的是一个实际数据的量,而引用类型存储对数据的内存地址的引用。
创建引用类型一般包括这两步:首先,在堆栈上创建一个引用变量;然后,在堆上创建对象本身,再把这个内存的首地址赋给引用变量。
例如:
String S1,S2;
S1="ABCD";S2 = S1;
在这里String是一个引用类型,S1,S2分别是指向字符串的引用变量。S1是字符串”ABCD”存放在内存中的一个地址。两个引用型变量(S1、S3)之间的赋值,使得他们两个都是对"ABCD"的引用。
注意:堆和栈的区别:
堆是由new分配的内存,存储可变长度的数据,按任意顺序和大小进行分配和释放内存。速度较慢,但方便使用,而栈是一般用于存储固定长度的数据。按先进后出的原则存储数据项。
相对于C#的数据类型来说,VB数据类型就简单多了,主要包括这么几种:数值型、货币型、字节型、日期型、逻辑型、字符串型和对象型。
二、变量与常量
1.常量就是指不可改变的量
C#中定义常量类型有:intdouble string boole char
语法:const类型名常量名=常量表达式
const double PI = 3.14159
常量的初始化:Const int a = 1
VB中的常量主要有整型、长整型和字节型常量和实型常量、字符串型常量、逻辑型常量和日期时间型常量。声明如下:
[public|private ] const <常量名>[AS] <类型>]= <表达式>
2.变量是指在程序运行过程中可以改变的量
在C#中对变量的声明:
[访问限定关键字] 数据类型 变量名
PS:
变量名必须是字母或下划线开头,不能有特殊符号;
一条变量声明中,可声明多个相同类型的变量。
变量的作用域:
Private只有自己可以访问
Internal在同一个程序集中可以访问
Public谁都可以访问
Protected只有继承关系可以访问
静态变量和实例变量:静态变量属于类,实例变量属于类的实例。
VB中的变量:
声明:<Public |Private|Dim|Static> <变量名>[As数据类型]
vb中变量的作用域:
局部变量:dim或static
模块级变量:private或Dim
全局变量:Public
运算符和表达式:
C#提供大量的运算符:按操作数的数目来分,有一元运算符(++/--),二元运算符(+,*)三元运算符(?:)按运算的功能来分以下几类:
算术运算符、关系运算符、逻辑运算符、赋值运算符、条件运算符、位运算符、其他特殊运算符。
而VB中运算符就简单的多了,主要有这几种:算术运算符、字符串运算符、关系运算符和逻辑运算符。