Chap 4 学习笔记
---------------------------
一、C#中的数据类型
数据类别 |
存储位置 |
说 明 |
典型数据类型 |
备 注 | |
值类型 |
堆栈 |
堆栈是用来存储有固定长度的数据的 |
数值型 |
整型 |
Sbyte short int long byte ushort uint ulong |
浮点型 |
Float(单精度) double(双精度) | ||||
小数点型 |
Decimal | ||||
字符型 char |
将文本以数字形式进行存储,char类型的数据要括在单引号中!2字节长度 | ||||
布尔型 bool |
仅有两种可能的值,true或false | ||||
结构 |
比数组强大:1、可以包含多类型数据,包括其他复合类型,可以看成其他数据类型的容器;2、除了名/值对以外,他们可以包含其他数据,如方法和属性 | ||||
枚举 |
枚举是用户定义的复合数据类型,它允许变量有预定义的、数组有限的值 | ||||
引用类型 |
堆 |
1、堆所存储数据的大小和长度只在运行时候决定,并且可以改变 2、对于堆中的变量,其引用的数据是存储在堆栈上的 |
字符串 string |
String数据类型可以保存任何长度的文本,不能执行数学运算,括在双引号中! | |
数组 |
数组是由相同类型的变量构成的组合,它使用一个通用的名称,不同之处在于有一个下标添加到名称后并括在方括号中 | ||||
类 |
| ||||
接口 |
| ||||
对象 object |
Object类型是C#中所有数据类型的基类型 |
另:处理日期数据的方式(日期型数据不是C#原有的)
DateTime date;
date=Convert.ToDateTime(“03/15/2005”); //必须进行显式转换
DisDate.Text=date.ToString(); //必须再转换为字符串,才能在Web上显示
二、运算符
运算符相关 |
类 别 |
备 注 |
赋值运算符 |
等号= |
表达式从右向左求值;a=a+1等同于a+=1;a++等同于a+1 |
算术运算符 |
加+ 减- 乘* 除/ 求余% 取负- |
只有取负-运算符是一元运算符,只有一个操作数;可以用括号来改变计算的执行顺序 |
运算符优先级 |
|
一级:++,--,求负-;二级:*,/,%;三级:+,-;四级:=,+=,-=,*= |
连接字符串 |
连接符+ |
C#允许把字符串进行连接(Concatenation),得到一个新字符串 |
三、数据类型的转换
转换类型 |
解 释 |
代码示例 | |
隐式转换 |
只有在运算结果没有丢失任何数据的情况下才允许进行隐式转换 |
Int intNumber=1000; Long lngNumber; lonNumber=intNumber; | |
显式转换 |
需要主动告诉编译器想要进行的转换;可以强制一些隐式转换不允许的操作; |
Long lngNumber=1000; Int intNumber; intNumber=(int)lngNumber; ------------------------------------------------------ Double Num3=(double)Num1/Num2;等同于 Double Num3=(double)Num1/(double)Num2; 都是先将Num1和Num2转换为double类型的数据 | |
无效的类型转换 |
当作为类型转换的结果的传递给变量的值大于那种类型允许的范围时就会溢出 可以用checked关键字检查是否发生溢出 |
Long lngNumber=2500000000; Int intNumger; Checked { intNumber=(int)lngNumber; } | |
数据转换的方式 |
当数据传入ASP.NET页面中,他们大多数都是以文本形式(string)存在,如HTML查询字符串等。如果对在输入中的任何数字数据进行任何计算,它必定是首先转换为数值类型。同样,为了在页面上显示结果,必须将计算结果再转换为字符串 |
数据输入的转换 ASP.NET标签控件—C#代码 |
String strdate=03/16/2005; DateTime date=Convert.ToDateTime(“03/16/2005”); |
数据输出的转换 C#代码—ASP.NET标签控件 |
Int intAge=21; String strAge=intAge.ToString(); | ||
转换失败的处理 |
应用C#提供的结构化异常处理机制 |
Try { Int myAge=Convert.ToInt32(“Hello”); } Catch { ErrorMessage.Text=”无法将此字符串转换为Int32类型”; } |
四、常量
一旦赋给常量一个值,它将不再改变
Const int intNumber=666888;
在C#或其他.NET语言中,无论是全局常量还是局部常量都必须定义在类定义中!
五、结构化的数据类型
结构化数据类型 |
类 别 |
代码示例 |
数组 |
一维数组 |
String [] myString; //声明一个数组 myString=new string[5]; //数组的初始化 //范围从myString[0] 到 myString[4] ---------------------------------------------------- String [] myString = new string[5]; //同时声明和初始化数组 ---------------------------------------------------- //下面是给一维数组赋值的示例 String [] myString=new string[2]; myString[0]=”Hello”; myString[1]=”World”; //等同于下面的写法 String [] myString=new string[2] {“Hello”,”World”}; //也等同于下面的写法 String [] myString=new string [] {“Hello”,”World”}; //也等同于下面的写法 String [] myString={“Hello”,”World”}; |
多维数组 |
String [,] my2DString=new string[2,2]; //建立一个2x2的二维数组 My2DString[0,0]=”A”; My2DString[0,1]=”B”; My2DString[1,0]=”C”; My2DString[1,1]=”D”; //为此2D数组赋值 | |
不规则数组 |
不规则数组不同于规则数组中的每行都有相同的数目的列数,而是每行中的列数可以互不相同 | |
结构 |
其他数据类型的容器 |
Struct myStruct { Public string…… } Void Page_Load() { //Data here } 注:对结构的定义应该放在Page_Load()的外部,这是因为我们想让结构为页面中所有的代码使用,而不只是Page_Load()方法。这也是把每个成员声明成public的原因 |
枚举 |
枚举可以限制变量值的范围 |
enum 枚举名{可选值1,可选值2} |