收藏 分享(赏)

第二章C#语言编程基础.ppt

上传人:hwpkd79526 文档编号:7884942 上传时间:2019-05-29 格式:PPT 页数:101 大小:809.50KB
下载 相关 举报
第二章C#语言编程基础.ppt_第1页
第1页 / 共101页
第二章C#语言编程基础.ppt_第2页
第2页 / 共101页
第二章C#语言编程基础.ppt_第3页
第3页 / 共101页
第二章C#语言编程基础.ppt_第4页
第4页 / 共101页
第二章C#语言编程基础.ppt_第5页
第5页 / 共101页
点击查看更多>>
资源描述

1、第2章 C#语言编程基础,2.1 标识符和关键字2.2 基本数据类型2.3 变量2.4 文字常量2.5 表达式,第2章 C#语言编程基础(续),2.6 结构与枚举 2.7 值类型与引用类型 2.8 控制台输入 2.9 习题,2.1 标识符和关键字,什么是标示符? 程序员为程序中一些要素所定义的名字,例变量名、对象名、方法名等。标识符命名规则: 由字母、数字、下划线“_”组成。 第1个字符必须是字母或下划线。 对字母大、小写敏感。 不能与关键字同名。,C#语言使用Unicode字符集,字母几乎包括当今世界上的任意的印刷体文字。字体不同产生的标示符也不同。实际编程时,一般采用ASCII字符集(它是

2、Unicode的子集),2.1 标识符和关键字(续),C#语言还允许标识符使用前缀,但并不是标识符的实际组成部分: 带“”前缀的标识符称作逐字标识符。 例: if /不是合法的标识符 if /合法的标识符 price /合法,但与price是同名标识符,2.1 标识符和关键字(续),思考以下标识符是否合法:HelloWorld_isTrue check_in52example $100Hello!Hello World Hello+World,/正确 /正确 /正确 /非法起始字符 /非法起始字符 /非法含有字符“!”/非法含有空格/非法含有运算符,2.1 标识符和关键字(续),关键字: 是C

3、#编译器的保留字,不能用作标识符。 C#语言共有77个关键字。,2.2 基本数据类型,整数类型:值类型 sbyte、short、int、long byte、ushort、uint、ulong 浮点数类型:值类型 float、 double decimal,2.2 基本数据类型(续),字符型:值类型 char 布尔型:值类型 bool 字符串型:引用类型 string object型:引用类型,2.3 变 量,变量声明的一般格式如下:数据类型 变量名1,变量名n;double width; char c;int i, j, k; 声明变量时,可以同时初始化。int i=1, j=2;double

4、 width=5.6,length;bool answer=true;char c= A;,声明:指定类型 指定变量名 以分号结束,初始化:指定类型 指定变量名 使用赋值运算符 (=) 指定值 以分号结束,2.4 文字常量,文字常量也称字面常量或字面值,是指直接出现在程序中的数据值 2.4.1 整型常量2.4.2 浮点型常量2.4.3 字符常量2.4.4 字符串常量2.4.5 布尔常量,2.4.1 整型常量,十六进制表示: 以0X或0x开头,例: 0X5cD 十进制表示: 例:32,0222注意:整型常量没有八进制表示形式。,2.4.1 整型常量(续),整型常量的默认数据类型是int型,但当其

5、值超出了int型的取值范围时,它将相应地被视为一个uint型、long型或ulong型常量。 加后缀L(或l)可以将整型常量显式说明为long或ulong型;加后缀U(或u)可以将整型常量显式说明为uint或ulong型。如果同时加上这两种后缀,整型常量就是ulong型。567892L /long型36u /uint型36ul /ulong型,2.4.2 浮点型常量,一般表示形式(小数表示形式): 由整数和小数两部分组成。 可省略其中的整数部分。例: 5.6,6.0,.9 指数表示形式: 由尾数、字母E(或e)、指数组成。例: 4.1E12,.27e4,5.0E-2,5E-2,2.4.2 浮点

6、型常量(续),浮点型常量的默认数据类型为double型。 要将其说明为float型,应加后缀F(或f)。例: 5.6f,4.1E5F 要将其说明为decimal型,应加后缀M(或m)。 例: 4.1E5M 加后缀D(或d),可以将浮点型常量显式说明为double型。例: 6.2D,2.4.2 浮点型常量(续),用一般表示形式表示的浮点型常量,如果其后加有后缀F、f、M、m、D或d,则小数点和小数部分可以同时省略。例: 1F /float型2M /decimal型22D /double型,2.4.3 字符常量,单引号括起来的一个字符例: A, b, $, * 转义字符 以反斜杠“”开头,后跟一个

7、字符或Unicode码。 用4位十六进制Unicode码表示:十六进制数字必须有4位。例:u0047 /Au0007 /beep声 通常用来表示那些一般方法无法表示的字符。字符常量的数据类型是char。,2.4.3 字符常量(续),2.4.4 字符串常量,用双引号括起来的一串字符 串中的字符也可以是转义字符。 标识字符串的两个双引号应该在同一行。例:“ a string“ Hello!n How are you?“,2.4.4 字符串常量(续),逐字字符串表示法。“c:cshapebook“ 等价于“c:cshapebook“ 逐字字符串中的双引号必须双写。“I say “I do.“ 标识逐

8、字字符串的两个双引号不必在程序的同一行。“the string hastwo lines“ /正确“the string hastwo lines“ /错误,2.4.5 布尔常量,false(假)、true(真)。 数据类型为bool。例2-1 变量与文字常量的使用,源代码,运 行,控制台输出,System.Console.Write()System.Console.WriteLine() 这两种方法都用于向屏幕输出结果,它们可用于所有的数据类型,所不同的是: Console.WriteLine()方法先输出信息后换行. 而Console.Write()方法不换行输出信息。,格式输出,用0,1

9、,,表示第1个参数和第2个参数值,及其他参数值的占位符,当输出时用第1个参数和第2个参数值,及其他参数值取代。例如:,int number = 9; Console.WriteLine(“the number is 0 “, number);,Console.WriteLine(“arr 0 = 1 “, I , arri );,例2-1代码 变量与文字常量的使用,/VariableLiteral.cs using System; class VariableLiteral static void Main()/声明变量,并用文字常量初始化bool isTrue=false;char c1=A

10、;char c2=u0038;,sbyte b1=-12;byte b2=12; short s1=-012; ushort s2=16; int i1=-0x48bF; uint i2=12; long l1=0X2Dcfa6; ulong l2=0x2dcfa6L;,/十进制,/十六进制,/整型常量加后缀L或l,说明为long型,float f1=1; float f2=22f; float f3=.26f; double d1=22D; double d2=2e2; double d3=-2.1e12d; decimal d4=22; decimal d5=-2.1e12m;,/加后缀f

11、,将浮点型常量说明为float型,/加后缀D,将浮点型常量说明为double型,/double型常量,/double型常量可以加后缀D或d,/加后缀m,将浮点数型常量说明为decimal型,/输出Console.WriteLine(“布尔型变量isTrue=0“,isTrue);Console.WriteLine(“字符型变量c1=0,c2=1“,c1,c2);Console.WriteLine(“字节型变量b1=0,无符号字节型变量b2=1“,b1,b2);Console.WriteLine(“短整型变量s1=0,无符号短整型变量s2=1“,s1,s2);Console.WriteLine(

12、“整型变量i1=0,无符号整型变量i2=1“,i1,i2);Console.WriteLine(“长整型变量l1=0,无符号长整型变量l2=1“,l1,l2);Console.WriteLine(“单精度浮点型变量f1=0,f2=1,f3=2“,f1,f2,f3);Console.WriteLine(“双精度浮点型变量d1=0,d2=1,d3=2“,d1,d2,d3);Console.WriteLine(“十进制小数型变量d4=0,d5=1“,d4,d5); ,运行结果,布尔型变量isTrue=False 字符型变量c1=A,c2=8 字节型变量b1=-12,无符号字节型变量b2=12 短整型

13、变量s1=-12,无符号短整型变量s2=16 整型变量i1=-18623,无符号整型变量i2=12 长整型变量l1=3002278,无符号长整型变量l2=3002278 单精度浮点型变量f1=1,f2=22,f3=0.26 双精度浮点型变量d1=22,d2=200,d3=-2100000000000 十进制小数型变量d4=22,d5=-2100000000000,2.4.5 符号常量,在声明语句中,可以声明一个标识符常量,但必须在定义标识符时就进行初始化并且定义之后就不能再改变该常量的值。 具体的格式为:const 类型 标识符=初值例如:const double PI=3.14159,2.4

14、.5 符号常量(续),为什么有必要使用符号常量? 防止一些固定的量被无意修改,导致程序运算出现错误; 列举更多的需要使用符号常量的情况; 可能的情况有物理化学数学等学科在计算中使用的常量,一些现实中固定不变的量,例如英文字母的个数等等。,2.5 表达式,表达式由运算符和操作数组成。 执行表达式操作所求的值称为表达式的值,它也可用作另一个表达式的操作数。 表达式值的类型由参加运算的数据的类型和运算符决定。例:6+5x=4x=2*6+2-4/2,2.5 表达式(续),运算符和表达式,Result,=,number,*,100,变量,变量,常量,操作数,表达式,操作数和运算符的组合,运算符,2.5

15、表达式(续),2.5.1 运算符 2.5.2 数值类型转换,2.5.1 运 算 符,用来实现操作数的加、减等运算。 运算符具有优先级和结合性。 按要求操作数的多少,运算符可分为一元运算符、二元运算符、三元运算符。 按运算性质,运算符可分为算术运算符、关系运算符、条件逻辑运算符等。,2.5.1 运 算 符(续),基本赋值运算符算术运算符关系运算符条件逻辑运算符位运算符复合赋值运算符 条件运算符字符串连接运算符改变优先级运算符,基本赋值运算符,基本赋值运算符(=)用于赋值运算。例:x=2.6x=y=z=2.6 4x /错误,左操作数必须是变量 赋值运算时,左边变量的类型必须与右边的值相容。例:fl

16、oat x=1.2; /错误,不相容float y=1.5f;,算术运算符,基本算术运算符: +、-、*、/、%一元加、减运算符: +、 -自增、自减运算符: +、-,基本算术运算符,当“/”运算符的两个操作数都是整数时,其计算结果是运算后所得商的整数部分。例:5/2 “%”的意义是求两个数相除后的余数。例:10%4 4.6%2.1-7%5 7%-5,/值为2 /值为0.4 /值为-2 /值为2,/值为2,一元加、减运算符,一元加、减运算符意义等同于代数中的正、负号。 实际编程时,一元加号通常省略。 例:i=+5i=8/-2i=8/(-2),自增、自减运算符,有前缀和后缀两种形式: 前缀形式是

17、先计算操作数的值,后把操作数的值作为表达式的结果。 后缀形式是先将操作数的值作为表达式的结果,然后把操作数的值增1或减1。例:int i=5; int j=3;int k1=i+; int k2=+i; int m1=-j; int m2=j-;,/k1=5, i=6 /k2=7, i=7 /m1=2, j=2 /m2=2, j=1,自增、自减运算符(续),自增、自减运算中的操作数只能是一个变量。例:5+ /错误(i-j)- /错误 参与自增、自减运算的操作数也可以是浮点数类型的变量。例2-2 算术运算,源代码,运 行,/ArithmeticOperation.cs using System;

18、 class ArithmeticOperation static void Main()/声明变量int k,m;double d1,d2,d3;/赋值d1=25.65;d2=12.28;,例2-2 算术运算,/int型变量运算k=15+2;Console.WriteLine(“int k=15+2=0“,k);k=15-2;Console.WriteLine(“int k=15-2=0“,k); k=15*2;Console.WriteLine(“int k=15*2=0“,k);k=15/2;Console.WriteLine(“int k=15/2=0“,k);k=15%2;Conso

19、le.WriteLine(“int k=15%2=0“,k);k=2;m=k+;Console.WriteLine(“nint k=2nk+后:k=0,k+=1“,k,m);m=+k;Console.WriteLine(“+k后:k=0,+k=1“,k,m);m=-k;Console.WriteLine(“-k后:k=0,-k=1“,k,m);m=k-;Console.WriteLine(“k-后:k=0,k-=1“,k,m);,/double型变量运算Console.WriteLine(“ndouble d1=0, d2=1“,d1,d2);d3=d1+d2;Console.WriteLin

20、e(“double d3=d1+d2=0“,d3);d3=d1-d2;Console.WriteLine(“double d3=d1-d2=0“,d3); d3=d1*d2;Console.WriteLine(“double d3=d1*d2=0“,d3);d3=d1/d2;Console.WriteLine(“double d3=d1/d2=0“,d3);d3=d1%d2;Console.WriteLine(“double d3=d1%d2=0“,d3);d3=d1+;Console.WriteLine(“d1+后:d1=0,d1+=1“,d1,d3);d3=-d1;Console.Writ

21、eLine(“-d1后:d1=0,-d1=1“,d1,d3); ,运行结果(.NET Ctrl+F5),关系运算符,、= 、= = 、 != 运算结果是一个bool型的值。 “= =”和 “!=”的操作数可以是除自定义结构外的任意数据类型,其他关系运算符的操作数只能是整数、浮点数或字符。 浮点数一般不能直接进行相等比较。,条件逻辑运算符,!(逻辑非)、&(条件与)、|(条件或)、(逻辑异或)、&(逻辑与)、|(逻辑或) 要求操作数都必须是bool类型,结果也是bool类型 条件逻辑运算符的运算规则如下,“&”和 “|”运算执行流程图,条件逻辑运算符(续),进行条件与“ /b=false,i2,

22、j4 而进行&(逻辑与)、|(逻辑或)运算时,不管左操作数是true还是false,总会计算右操作数的值例2-3 关系运算与条件逻辑运算,源代码,运 行,/RelLogOperation.cs using System;class RelLogOperation static void Main()int i = 1, j = 2;bool b;Console.WriteLine(“i=0, j=1“, i, j);Console.WriteLine(“ij is 0 “, (i j);Console.WriteLine(“经过b=ij,Console.WriteLine(“i=j is 0“

23、, (i = j);Console.WriteLine(“经过b=i=j ,运行结果(.NET Ctrl+F5),位运算符,操作数和运算结果都是整数类型。 运算对象是操作数的二进制“位”。 分为按位运算符和移位运算符。,按位运算符,例:0x71: 0 1 1 1 0 0 0 10x52:() 0 1 0 1 0 0 1 00x710x52: 0 0 1 0 0 0 1 1,移位运算符,左移位()将左操作数的二进制值向右移动指定的位数,右移后,移出的低位舍弃,如果原值为正则高位补0;如果原值为负则高位补符号位。例2-4 位运算,源代码,运 行,例2-4 源代码 位运算,/BitOperation

24、.cs using System; class BitOperation static void Main()int x = 5, y = 10, z = -128;Console.WriteLine(“0 ,复合赋值运算符,有10个:+=、-=、*=、/=、%=、=、&=、=、|=。例:x*=2 /等价于x=x*2x*=x+2 /等价于x=x*(x+2),条件运算符,条件运算符 ? : 是C#中唯一一个三元运算符,其形式为:表达式1 ?表达式2 :表达式3 其中表达式1的运算结果必须是一个bool类型值,表达式表达式2和表达式3可以是任意数据类型,但它们返回的数据类型必须一致。 条件运算符的

25、运算过程是:首先计算表达式1的值,如果其值为true,则计算表达式2值,这个值就是整个表达式的结果;否则,取表达式的值作为整个表达式的结果。 例如: z = x y ? x : y ; / z 的值就是x,y中较大的一个值 z = x =0 ? x : -x ; / z的值就是x的绝对值 x=(45)?4:5 /x=5,字符串连接运算符,C#中,运算符+能用于连接字符串。 当运算符“+”用于操作字符串时,它的两个操作数中可以有一个不是字符串。例:“Hello!“+“ C#“ /值为“Hello! C# “int a=5,b=5; “a+b=“+a+b /值为“a+b=55“a+b+ “a+b=

26、“ /值为“10a+b=“例2-5 字符串连接运算,源代码,运 行,例2-5 字符串连接运算,/StringOperation.cs using System; class StringOperation static void Main()int i = 2, j = 3, k = 4;Console.WriteLine(“i=0,j=1,k=2“, i, j, k);Console.WriteLine(“表达式“i,j,k “+i+j+k的结果是:“);Console.WriteLine(“i,j,k “ + i + j + k);Console.WriteLine(“表达式i+j+k+“

27、 i+j+k“的结果是:“);Console.WriteLine(i + j + k + “ i+j+k“);Console.WriteLine(12+8); ,C#运算符的优先级与结合性 其中表顶部的优先级较高,改变优先级运算符,防止因不清楚运算符优先级而出现错误的办法是什么? 使用括号,按照预想的顺序对表达式求值。例:x=4+6*8-10*2 /x=32x=(4+6)*8-10)*2 /x=140,2.5.2 数值类型转换,隐式转换 由编译器自动完成.显式转换 需要明确要求编译器完成的转换.,隐式转换,int 型常量表达式的值可隐式转换为 sbyte、byte、short、ushort、u

28、int 或 ulong型,前提是常量表达式的值处于目标类型的取值范围之内。 对sbyte、byte、short、ushort或char型的变量进行算术或按位运算时,在正式运算前,这些变量的值会隐式转换为int型。 char型的数值能隐式转换为ushort、int、uint、long、ulong、float、double或decimal型,但任何数据类型的值都不能隐式转换到char型。,隐式转换(续),由算术运算符、关系运算符或位运算符中的二元运算符组成的表达式要求两个操作数的数据类型相同,如果经过上述转换后,还不相同,系统将自动按照如下所示进行隐式转换以使参与运算的两个操作数具有相同的数据类型

29、。sbyte short int long float doublebyte ushort uint ulong decimal 对于赋值运算,如果左、右操作数的数据类型不同,右操作数将尝试按上述转换规则将自己的数据类型转换为和左操作数相同,并将转换后的值赋给左操作数。如果不能转换,编译器将报错。,隐式转换(续),隐式转换是一种安全的转换。例2-6 隐式数值类型转换,源代码,编 译,/TypeCast.cs using System; class TypeCast static void Main()char c1=D,c2;sbyte sb1=1,sb2=2,sb3; byte b1=1,b

30、2=2,b3;short s1=3, s2=4,s3; ushort us1=3,us2=4,us3;c2=c1+A;Console.WriteLine(“char c2=0“,c2);sb3=sb1-sb2;Console.WriteLine(“sbyte sb3=0“,sb3);b3=b1*b2;Console.WriteLine(“byte b3=0“,b3);s3=s1/s2;Console.WriteLine(“short s3=0“,s3);us3=us1 ,/TypeCast.cs using System; class TypeCast static void Main()ch

31、ar c1=D;sbyte sb1=1,sb2=2; byte b1=1,b2=2;short s1=3, s2=4; ushort us1=3,us2=4;c1+=A;Console.WriteLine(“char c1=0“,c1);sb1-=sb2;Console.WriteLine(“sbyte sb1=0“,sb1);b1*=b2;Console.WriteLine(“byte b1=0“,b1);s1/=s2;Console.WriteLine(“short s1=0“,s1);us1 ,显式转换,显示转换的作用是将某种数据类型强制转换成指定类型,具体形式如下:(类型说明符)表达式

32、 例: double x=5.5, y;y=x-(int)x; /y=0.5 bool型不能进行任何形式(隐式或显示)的转换。但可利用System.Convert类定义的方法转换(12.4.2)例: bool b=false;int i=(int)b; /错误,注意:. 显式转换是一种不安全的转换。2. 转换并不实际改变操作数的数据类型。,2.6 结构与枚举,2.6.1 结构(值类型)2.6.2 枚举(值类型)2.6.3 结构与基本数据类型,2.6.1 结 构,结构类型是一种复合类型,它将多个不同类型的成员组合为一种新类型,通常用来封装小型相关变量组。例:struct Studentpubli

33、c string Name;public char Sex;public int Age;public string Addr;,Public是一个访问权限修饰符,表示相应成员是公共的,对它的访问没有任何限制。 如果程序没有显示指定,默认的访问权限修饰符是Private(私有的),私有的成员只能被其所属的结构访问。(5.8),2.6.1 结构(续),定义某种结构类型后,就可以声明这种类型的变量。例: Student stud1,stud2;访问一个结构变量包括两方面的内容: 访问结构变量中的某个成员 访问整个结构变量。,2.6.1 结构(续),访问一个结构变量中的某个成员:结构变量名.成员例:

34、stud1.Name=“李明“;stud1.Sex=男;stud1.Age=16;stud1.Addr=“北京海淀“; 注意:上述成员都是Public ,如果是Private,上面的使用就是错误的。,2.6.1 结构(续),访问整个结构变量通常用于同一结构类型的变量之间的赋值。例:stud2=stud1;,2.6.1 结构(续),使用某个结构变量给另一变量赋值时,用于赋值的变量必须已经赋值。例:Student stud1;Student stud2=stud1; /错误例2-7 使用结构变量,源代码,运 行,using System; class UseStruct static void M

35、ain()Student stud1,stud2;stud1.Name=“李明“;stud1.Sex=男;stud1.Age=20;stud1.Addr=“北京海淀“;Console.WriteLine(“0 1 2 3“,stud1.Name,stud1.Sex,stud1.Age,stud1.Addr); stud2=stud1;stud2.Name=“汪洋“;stud2.Age=24;Console.WriteLine(“0 1 2 3“,stud2.Name,stud2.Sex,stud2.Age,stud2.Addr); ,struct Student public string N

36、ame;public char Sex;public int Age;public string Addr; ,课堂练习,编写一个程序,定义一个表示发票的结构类型(包含发票号、定单日期、客户姓名、产品名、产品费用、应付款总计字段),声明一个该类型的变量,给各个字段赋值,然后在屏幕上输出该变量的 值。,struct Bill_Details public string inv_No; / 发票号public string ord_Dt; / 定单日期public string custName; / 客户姓名public string product; / 产品名public double co

37、st; / 产品费用public double due_Amt; / 应付款总计 ,2.6.2 枚 举,枚举类型是一种复合类型,定义时,需要把变量的可能取值一一枚举出来。例:enum WeekdaySunday,Monday,Tuesday, Wednesday,Thursday,Friday, Saturday,2.6.2 枚举(续),定义某种枚举类型后,就可以声明这种类型的变量。例:Weekday wd; 要为枚举变量赋一个枚举值,需要使用运算符“.”。例:wd=Weekday.Friday;,2.6.2 枚举(续),每个枚举值实际上都被赋予一个整数类型常量值。默认情况下,第1个枚举值为0

38、,其后枚举值依次增1,且数据类型是int型。 可以显式为枚举值指定其他整数类型,也可以为枚举值指定特定整数类型常量表达式值。例:enum Color:sbyteRed=20,Blue=-10,White ,2.6.2 枚举(续),不能直接给枚举变量赋整数值(0值除外)或给一个整数类型变量赋枚举值,除非进行显式类型转换。例:Weekday wd1=2; /错误Weekday wd2=(Weekday)2; int i=Weekday.Sunday; /错误int j=(int)Weekday.Sunday;,2.6.2 枚举(续),将一个不合法的整数显式转换后赋给某个枚举变量时,同样可以编译通过

39、。例: wd=(Weekday)100; 例2-8 使用枚举变量,源代码,运 行,/UseEnum.cs using System; class UseEnum static void Main()Weekday wd=Weekday.Monday; Console.WriteLine(“wd=0“,wd); wd=wd+3; /枚举变量可以进行加减运算Console.WriteLine(“wd=0“,wd); enum Weekday Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday ,讨论:为什么需要使用枚举类型?,确保只将预

40、定值赋给变量,使变量易于维护; 允许给数值赋以简单易认的名字,提高代码可读性; 易于输入,因为代码编辑器的“智能感知”功能会显示可使用的列表; 允许指定一组常数值,并定义仅接受该组常数值的类型。,2.6.3 结构与基本数据类型,2.6.3 结构与基本数据类型(续),C#基本数据类型是.NET框架中对应的数据类型的别名。例:System.Int32 i; /等价于int i;System.Double d; /等价于double d; 例2-9 使用基本数据类型对应的结构,源代码,运 行,System.Boolean结构中有两个静态之都字段:FalseString和TrueString,分别代表

41、逻辑值false和true 其他结构,都有两个公共常量成员MaxValue、MinValue,通过它们可以获取相应类型的最大值和最小值,using System; class TypeRange static void Main()Console.Write(“sbyte:“);Console.WriteLine(“01“,SByte.MinValue,SByte.MaxValue);Console.Write(“byte:“);Console.WriteLine(“01“,Byte.MinValue,Byte.MaxValue);Console.Write(“short:“);Console

42、.WriteLine(“01“,Int16.MinValue,Int16.MaxValue);Console.Write(“ushort:“);Console.WriteLine(“01“,UInt16.MinValue,UInt16.MaxValue);Console.Write(“int:“);Console.WriteLine(“01“,Int32.MinValue,Int32.MaxValue);Console.Write(“uint:“);Console.WriteLine(“01“,UInt32.MinValue,UInt32.MaxValue);Console.Write(“lo

43、ng:“);,Console.WriteLine(“01“,Int64.MinValue,Int64.MaxValue);Console.Write(“ulong:“);Console.WriteLine(“01“,UInt64.MinValue,UInt64.MaxValue);Console.Write(“float:“);Console.WriteLine(“01“,Single.MinValue,Single.MaxValue);Console.Write(“double:“);Console.WriteLine(“01“,Double.MinValue,Double.MaxValue

44、);Console.Write(“decimal:“);Console.WriteLine(“01“,Decimal.MinValue,Decimal.MaxValue);Console.Write(“char:“);Console.WriteLine(“01“,(int)Char.MinValue,(int)Char.MaxValue);Console.Write(“bool:“);Console.WriteLine(“0,1“,Boolean.FalseString,Boolean.TrueString); ,2.7 值类型与引用类型,值类型是指这种类型的变量总是包含该类型的值。 引用类型

45、是指这种类型的变量总是包含相应数据在内存中存放位置的引用,通过该引用可以间接访问相应的数据值。 结构和枚举属于值类型;类、接口、数组和委托等属于引用类型。,2.7 值类型与引用类型(续),值类型,int Num1;Num1=50;,int Num2;Num2=Num1;,2.7 值类型与引用类型(续),值类型(续),Num1=60;,2.7 值类型与引用类型(续),引用类型,string str1;str1= “abcd“;,string str2;str2=str1;,包含“abcd“首地址,“abcd“,str1,知识扩展:通用类型系统,.NET Framework 中的类型系统的以下两个

46、基本点: 它支持继承原则。 类型可从称为基类型的其他类型派生。 派生类型继承基类型的方法、属性和其他成员(存在一些限制)。 之后,基类型可从某些其他类型派生,这种情况下,派生类型继承其层次结构中这两个基类型的成员。 包括如 System.Int32(C# 关键字:int)等内置数值类型在内的所有类型,最终都是从一个基类派生得到的,该基类即 System.Object (C# 关键字:object)。 这种统一的类型层次结构称为常规类型系统 (CTS)。 CTS 中的每一个类型都被定义成了值类型或引用类型。 这包括 .NET Framework 类库中的所有自定义类型以及您自己的用户定义类型。

47、使用关键字 struct 定义的类型是值类型;所有内置数值类型都是 structs。 使用关键字 class 定义的类型是引用类型。 引用类型和值类型有不同的编译时规则和不同的运行时行为。 下图演示了 CTS 中的值类型和引用类型之间的关系。,CTS 中的值类型和引用类型,2.8 控制台输入,System.Console.Read() System.Console.ReadLine()这两种方法都用于从键盘读取信息,存入某个变量中,所不同的是:Console.ReadLine()方法用于读取一行字符,并将获得的数据保存在字符串变量中。 而Console.Read()方法用于获得用户输入的任何一个字符的Unicode值。例2-10 控制台输入,源代码,运 行,/*/MyInput.cs using System; class MyInput static void Main()Console.Write(“Enter a integer number: “);string str = Console.ReadLine(); /读入一串字符int i = Int32.Parse(str);Console.WriteLine(“You entered the number:0“, i); /*/,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报