第2章C#数据类型.ppt

上传人:本田雅阁 文档编号:3423393 上传时间:2019-08-24 格式:PPT 页数:120 大小:2.09MB
返回 下载 相关 举报
第2章C#数据类型.ppt_第1页
第1页 / 共120页
第2章C#数据类型.ppt_第2页
第2页 / 共120页
第2章C#数据类型.ppt_第3页
第3页 / 共120页
第2章C#数据类型.ppt_第4页
第4页 / 共120页
第2章C#数据类型.ppt_第5页
第5页 / 共120页
点击查看更多>>
资源描述

《第2章C#数据类型.ppt》由会员分享,可在线阅读,更多相关《第2章C#数据类型.ppt(120页珍藏版)》请在三一文库上搜索。

1、,第2章 数据类型和表达式,课程目标,C#的两种数值类型引用类型和值类型 变量和常量的命名规则以及定义 表达式和运算符 字符串的处理 装箱和拆箱,变量( 2-1),语法: 访问修饰符 数据类型 变量名,Public,Private,Protected,int,string,float,变量用于存储特定数据类型的值,变量的命名,基本的命名规则如下: 变量名的第一个字符必须是字母、下划线或。 其后的字符可以是字母、下划线或数字。 命名要点 变量的名称中不能出现c#中的关键字; 最好根据变量的作用来命名,即“见名知义”; 我们约定使用PascalCase命名方法。,变量 (2-2),static v

2、oid Main(string args) / 声明布尔型、字符串型、整型、短整型和浮点型变量 bool test = true; short num1 = 19; int num2 = 14000; string val = “John“; float num3 = 14.5f; / 显示变量值 Console.WriteLine (“布尔值 = “ + test); Console.WriteLine (“短整型值 = “ + num1); Console.WriteLine (“整型值 = “ + num2); Console.WriteLine (“字符串值 = “ + val); C

3、onsole.WriteLine (“浮点值 = “ + num3); ,变量中存储的值取决于该变量的类型,定义变量的注意事项,变量由多个单词组成时,让单词首字母大写来分隔单词,而不要使用下划线作为单词的分隔符。 尽量少使用单字母作为变量名(循环计数变量除外)。多使用有意义的单词作为变量名称。 变量应该先声明后使用。 变量应该先初始化后使用。,静态变量和实例变量,用static修饰符声明的变量称为静态变量,没有static修饰符声明的变量称为实例变量。 静态变量在任何时候都只有一个副本,而实例变量属于某个实例,每一个类的实例都有一个副本。 public static long id=1027;

4、 public int number; public decimal price;,静态变量和实例变量,看一个例子:,局部变量,在程序块内声明的变量称为局部变量。 for(int i=0;i5;i+) Console.WriteLine(i);,隐式类型的局部变量,声明变量时,可以不指定数据类型,而由编译器根据变量的初始值推断出变量的数据类型,这个变量就称为隐式变量。 语法: var 隐式变量名=初始值; var age=30; var name=“张三”; var flag=true;,隐式类型的局部变量,使用隐式类型局部变量时,应注意: 1.定义隐式类型的局部变量时,必须初始化; 2.不能

5、把隐式类型的局部变量初始化为null; 3.不能在同一语句中初始化多个隐式类型的变量,如:var age=20,count=30; 4.隐式类型的局部变量不能作为函数的返回值和参数; 5.隐式类型的局部变量不能作为类的成员。,常量 2-1,语法: 访问修饰符 const 数据类型 常量名 = 常量值;,Public,Private,Protected,常量用于在整个程序中将数据保持同一个值,int,string,float,常量 2-2,static void Main(string args) / PI常量PI const float PI = 3.14F; / 由地球引力引起的加速度常量,

6、单位为 cm/s*s const float Gravity = 980; / 钟摆的长度 int length = 40; / 钟摆的周期 double period = 0; / 钟摆周期的计算公式 period = 2 * PI * Math.Sqrt(length / Gravity); Console.WriteLine (“钟摆的周期为 0 秒“, period); ,声明常量,在表达式中使用常量,const 关键字用于声明常量,C# 的基本数据类型,C# 中的数据类型分为两个基本类别 值类型 表示实际数据 只是将值存放在内存中 值类型都存储在堆栈中 int、char、结构 引用类

7、型 表示指向数据的指针或引用 包含内存堆中对象的地址 为 null,则表示未引用任何对象 类、接口、数组、字符串,C#两种数值类型,C# 的基本数据类型,值类型和引用类型的区别 (例子) 基于值类型的变量直接包含值。 将一个值类型变量赋给另一个值类型变量时,将复制包含的值。 引用类型变量不存储实际数据内容,而是存储对实际数据的引用。 引用类型变量的赋值只复制对数据的引用,而不复制数据本身。,2.1 值类型 简单类型 1. 简单类型是C#预置的数据类型,包括整数类型、浮点类型、decimal类型、布尔类型和字符类型。 2.在.net框架中,也称为预定义结构类型,保留字就是预定义类型的别名,因此简

8、单类型与预定义结构类型是等价的。 int x=10; System.Int32 x=10; 3.简单类型也具有成员: int i=int.MaxValue; string s=i.ToString();,2.1.1 简单类型 整数类型 c#支持9种整数类型:sbyte, byte, short, ushort, int, uint, long, ulong和char。 若没有显示说明,则整数值默认为int类型。 若要将数值指定为其他整数类型,则可以在数值后边加上后缀。如:U表无符号数,L表长整型等。,2.1.1 简单类型 浮点类型 c#支持2种浮点类型:float和double。 若没有显示说

9、明,则浮点数默认为double类型。 若要将数值指定为float类型,则可以在数值后边加上后缀F。,2.1.1 简单类型 decimal类型 1. 这种类型是适合财务和货币计算的128位数据类型。 2.必须在数值后边加上后缀M表示decimal类型,如果不加,则默认为double类型。,2.1.1 简单类型 布尔类型 在C#中,可以将布尔值赋给布尔型变量,也可以将值为布尔类型的表达式赋给布尔型变量。 在C#中,布尔类型与整型截然不同,不能用布尔值代替整数值。,2.1.1 简单类型,字符类型 字符类型包括字母、数字、标点符号以及特殊的控制字符等。 定义一个字符变量可以如下: char x = a

10、; 注意:表示字符时要用单引号括起来,也可以为字符变量赋转义字符。 char y = x0041;,转义序列表,转义字符示例,/转义字符 using System; class ESCCharacter static void Main(string args) Console.WriteLine(“毛主席他老人家说过:“好好学习t天天向上“.n我们一定要谨遵他老人家的u005C教诲u005C!“); ,使用字符类型时应注意: 不存在从其他类型到char类型的隐式转换; 对字符型变量使用整数进行赋值和运算是不允许的 字符型和整型之间可以进行显式转换 如:char c=(char)10; int

11、 d=(int)j; 看一个简单类型的综合例子,2.1 值类型 结构类型 结构的定义需使用struct关键字,定义格式如下: struct 结构类型名称 public 类型名称1 结构成员名称1; private 类型名称2 结构成员名称2; . ,(1) 声明结构变量 定义结构后,一个新的数据类型就产生了,可以像使用基本数据类型那样,用结构来声明变量。 (2) 访问结构变量 使用结构中的成员必须指出访问的结构变量。方法是在结构变量和成员之间通过运算符“”连接在一起。即:结构变量名.成员名,结构类型是在主函数外声明的。 Struct student string id; string name

12、; int age; int score; 在main函数中定义变量:Student s; 访问结构变量:s.id=“2008010844”; 在引用结构体成员时,处理它们的方式与成员类型相同的变量完全一样。 注意:结构中的字段不能在定义时赋初值。 (看一个例子),枚举类型 定义枚举类型使用关键字enum,定义枚举类型的一般格式为: enum 枚举类型名称 符号常量1, 符号常量2, ,(1)如果未对枚举元素进行初始化,则各个枚举元素的默认值为0、1、2。 (2)还可以在定义枚举类型时为成员赋予特定的整数值,例如 enum SolarSystem Sun=700000, / 太阳半径 Eart

13、h=6380, / 地球赤道半径 Moon=1740 / 月亮半径 ,(3)枚举使用一个基本类型来存储,在默认情况下,该类型为int,在枚举声明中添加类型,就可以指定其它基本类型: enum orientation:byte north=1, sorth=2, east=3 , west=4 ,(4)声明与访问枚举变量 有了枚举类型后,可以使用它来声明枚举变量 WeekDays day =WeekDays.Thursday; / 使用WeekDays.Thursday来访问枚举元素,并用枚举元素初始化枚举变量 还可以使用整型值为枚举变量赋值,但必须进行显示转换.当然也可以将枚举元素显式转换为整

14、型数。 WeekDays day =(WeekDays)3; Console.WriteLine(int)WeekDays.Thursday); 看一个例子,思考,新建一个控制台程序,实现如下功能: 1)north 2)south 3)east 4)west Please select a direction: Please input a distance: 当你用键盘输入比如1时,则屏幕会自动输出:north,接着从键盘输入一个距离,随后屏幕也会显示你所输入的距离。 注意:最好用枚举和结构类型来实现此题,以进一步熟悉枚举和结构类型的用法。,2.2 引用类型,引用类型继承自Object。 引

15、用类型存储的是对实际数据内存地址的引用,当两个引用类型变量引用同一内存中的数据时,对其中一个引用类型变量进行操作会影响另一个引用类型变量。 引用类型包括类、接口、委托、数组、字符串等。,1 类 C#中经常用到两个类:object和string 对于object类型,它是所有其他类型的基类,一个object类型的变量可以赋予任何类型的值。 对于string类型,它表示由0个或多个unicode字符构成的一组字符序列。 2 接口 接口好比一种模板,这种模板定义了实现接口的对象必须实现的方法,其目的就是让这些方法可以作为接口实例被引用。 3 委托 C#中,委托是引用类型,它是完全面向对象的 4 数组

16、,new 操作符,new操作符用于创建一个新的类型实例。它有三种形式: 对象创建表达式,用于创建一个类类型或值类型的实例。 数组创建表达式,用于创建一个数组类型实例。 代表创建表达式,用于创建一个新的代表类型实例。 例: int int_arr = new int10; Program t1=new Program();,as 操作符,as运算符用于在兼容的引用类型之间执行转换。 实际上as运算符就是一个强制类型转换,如果转换不成功,则返回null。 例: object x=“10”; string y=x as string; Console.WriteLine(“0,1”,y.GetTyp

17、e(),y);,is操作符,is操作符用于动态检查对象的运行时类型是否与给定类型兼容,如果兼容,则返回true,否则返回false。 例: object z=“123”; if(z is string) Console.WriteLine(“z is a string.”);,sizeof 操作符,sizeof操作符用于获得值类型的大小。(以字节为单位) 使用方法:sizeof(类型) 例: Console.Write(sizeof(double);,typeof 操作符,typeof操作符用于获取某一数据类型的预定义结构类型。 使用方法:typeof(类型) 若要获得一个变量或表达式的类型,

18、必须使用GetType(). 例: int x=10; Console.WriteLine(typeof(int); Console.Write(x.GetType();,数组 1 数组概述 数组是一些具有相同类型的数据按一定顺序组成的序列,数组中的每一个数据都可以通过数组名及唯一一个索引号(下标)来存取。所以,数组用于存储和表示既与取值有关,又与位置(顺序)有关的数据。数组元素可以是任何类型。,数组 对数组元素的访问是通过数组下标来实现的。(下标从0开始计数) 在C#中,数组分为:一维数组,多维数组和交错数组,一维数组 1.数组的定义与初始化 数据类型 数组名=new 数据类型元素个数 如:

19、int a=new int5; 2.也可以在定义数组的同时进行初始化 数据类型 数组名= new 数据类型元素个数初始化列表 如:inta=new int210,20; intb=new int10,20; intb=10.20;,一维数组 在使用数组类型时,应注意: 在定义一个数组的时候,方括号必须跟在数据类型的后面,而不能跟在数组名后面; 先声明数组,再初始化时必须使用new运算符,不能省略。 如:int d; d=1,2,3;,一维数组 3.访问数组元素 通过数组下标找到数组元素,可以为数组元素赋值,也可以修改数组元素的值。 如:string c = “one”,”two”,”three

20、”; double scores = 83,78.5,92; scores1=79; string str=c1;,例题,定义一个数组,求最大数和最小数 (见例子),多维数组,1.二维数组的定义与初始化 数据类型维数1,维数2 数组名= new 数据类型一维元素个数,二维元素个数 如:int , a = new int2,2; 2.有两种方式对二维数组进行初始化 如:int,a=new int,1,2,3.4; int,b=1,2,3.4 ;,多维数组,如果维数超过两个,则称为多维数组。定义方式类似二维数组。 看一个二维数组的例子,交错数组,一般使用交错数组存储稀疏矩阵。 交错数组是指数组的元

21、素又是一个数组,它与多维数组不同,它的维数和大小可以不相同。 交错数组的定义形式: 数据类型 维数1维数2 数组名 = new 数据类型一维元素个数; 如:int a = new int 3; 注意:交错数组必须初始化后才可以使用。,隐式类型数组,定义数组时,可以不指定类型,类型是从数组初始化列表中的元素推断而来的。 隐式数组的定义形式: var 数组名= new 初始化列表; var a = new 1,10,100,1000; var b=newnew1,2,3,4,new5,6,7,8; 注意:隐式类型数组只支持一维数组,不支持隐式类型多维数组。,array类常用属性和方法 (1)Len

22、gth属性,数组的长度 (2)Rank属性,获得数组维数 (3)Copy( )方法,复制数组 (4)Sort( )方法,排序数组 (5) GetLength()方法:用于获取指定维的长度 还可以使用一种更有弹性的方法来获取数组的所有元素,即foreach循环。,foreach循环,foreach循环可以使用一种简便的方法来定位数组中的每个元素: foreach(类型 迭代变量 in 集合表达式) 但需要注意的是这种方法只能对数组内容进行只读访问,所以不能改变任何元素的值。 演示实例,foreach循环,foreach也可以访问多维数组中的所有元素,其方式与访问一维数组相同。 如: Double

23、, hillHeight=1,2,3,4,2,3,4,5,3,4,5,6; foreach(double height in hillheight) Console.WriteLline(“0”,height); ,字符串 1.字符串声明和引用 它有两种表达方式: 1)用string 关键字声明的一组内容放在双引号中 string s=“Hello Word!”; 2)用引起来,它可以把字符串中的特殊字符的特殊性去掉,字符串中的所有字符均被认为是普通字符。 string DirName=”c:windows”;,处理字符串,2. 关键字string拥有大量处理字符串的方法 1) string类

24、型变量可以看作是char变量的只读数组。为了获得一个可写的char数组,可以使用ToCharArray()命令: string mystring = “a string”; char mychars = mystring.ToCharArray(); foreach (char character in mychars) Console.WriteLine(“0”, character); 演示一个例子:,处理字符串,2).获取字符串的长度(Length属性) 如:string str=“my name is lili!”; Console.WriteLine(str.Length); 3).

25、连接两个字符串(“+”或Concat方法) 如: string a=“this”; string b=“is a test.”, string c=a+b; /string c=string.Concat(a,b); 注意:字符串连接符不同于算术运算符,处理字符串,4).取子串( Substring方法) public string Substring(int startIndex) public string Substring(int startIndex,int length) startIndex:子字符串的起始位置, length:子串长度 如:string a=“this is a

26、 test.”; string c=a.Substring(5,2); 5).查找字符或子串在字符串中的位置(IndexOf方法) int IndexOf(char value,int startIndex,int count) int IndexOf(string value,int startIndex,int count) 与这个方法相对应的,还有一个LastIndexOf()方法,它是从字符串的后面向前搜索。,6).比较字符串的方法( Equals方法/Compare方法/=/!=) string a=“this”; Console.WriteLine(“0”,a.Equals(“th

27、is”); Console.WriteLine(“0”,string.Compare(a,“this”);,处理字符串,7).字符串转换 全部转换成大写,string theString = “Hello World!”; string upperString = theString.ToUpper(); Console.WriteLine(theString); Console.WriteLine(upperString);,处理字符串,Hello World! HELLO WORLD!,7). 字符串转换 全部转换成小写,string theString = “Hello World!”;

28、 string lowerString = theString.ToLower(); Console.WriteLine(theString); Console.WriteLine(lowerString);,处理字符串,Hello World! hello world!,7). 字符串转换 使用字符串转换来忽略大小写,练习下: 让用户从控制台输入用户名和密码都为小写,只有当 用户名为“SOMEBODY” 和密码为”test”时,控制台才 会显示“欢迎进入主界面”,否则显示“错误信息”。,处理字符串,Console.Write(“User name: “); string username =

29、 Console.ReadLine(); Console.Write(“Password: “); string password = Console.ReadLine(); if (username.ToUpper() = “SOMEBODY” ,7). 字符串转换 使用 .Trim() 来调整字符串,使之去除掉左右空格。,string theString = “ Hello world! ”; string trimString = theString.Trim(); Console.WriteLine(“|”+theString+”|”); Console.WriteLine(“|”+t

30、rimString+”|”);,处理字符串,| Hello world! | |Hello world!|,7) 字符串转换 综合示例,处理字符串,Console.Write(“User name:“); string username = Console.ReadLine().Trim().ToLower(); Console.Write(“Password: “); string password = Console.ReadLine(); if (username = “some” ,7) 字符串转换 使用 Trim 可以去掉以指定字符开头或结尾的字符,直到遇到非指定的字符为止:,处理字

31、符串,.Trim(new char 要去掉的字符列表 );,Console.Write(“Continue? “); string userResponse = Console.ReadLine(); char trimChars = , e, s ; userResponse = userResponse.Trim(trimChars).ToLower(); if (userResponse = “y“) Console.WriteLine(“继续“); ,当要去掉的字符数组为 , _, 时,转换如下: “ Hello_world_” = “Hello_world” “ _ _ Hello_

32、 _world” = “Hello_ _world” 注!Trim 方法只会去掉以指定字符开头或结尾的字符,而不会去掉其它地方的字符!,7) 字符串转换 使用 TrimStart 去掉字符串开头的指定字符,处理字符串,.TrimStart(new char 要去掉的字符列表 );,Console.Write(“Input a string: “); string inputString = Console.ReadLine(); inputString = inputString.TrimStart(new char ); Console.WriteLine(“Trim string is 0

33、”, inputString);,Input a string: Hi, all! Trim string is Hi, all!,7) 字符串转换 使用 TrimEnd 去掉字符串结尾的指定字符:,处理字符串,.TrimEnd(new char 要去掉的字符列表 );,Console.Write(“Input a string: “); string inputString = Console.ReadLine(); inputString = inputString.TrimEnd(new char _); Console.WriteLine(“Trim string is 0”, inp

34、utString);,Input a string: Hi, all!_ Trim string is Hi, all!,7) 字符串转换 使用 PadLeft或PadRight在字符串左边或右边添加指定数量的空格:,处理字符串,.PadLeft(); .PadRight();,Console.Write (“|”+“Hello ”.PadLeft(10); Console.Write (“World”.PadRight(10)+”|”);,| Hello World |,7) 字符串转换 使用 PadLeft或PadRight在字符串左边或右边添加指定数量的指定字符:,处理字符串,.PadL

35、eft(, ); .PadRight(, );,Console.Write (“|”+“Hello ”.PadLeft(10, #); Console.Write (“World”.PadRight(10,#)+”|”);,|#Hello World#|,8) 字符串分割 可以使用 Split 把字符串按指定的字符分割成字符串片断。,处理字符串,.Split(new char 分割字符列表 );,string splitString = “Hello world”.Split(new char ); foreach (string subString in splitString) Conso

36、le.WriteLine(subString);,Hello world,从文件中获得数据,练习: 模拟从文件中读出一个学生的三门成绩,文件定义成字符串形式,如下所示: string scoreString = “100|89|70“; 试编程实现读取这三门成绩,并依次输出。,/从文件中读出一个学生三门成绩 string scoreString = “100|89|70“; string scores = scoreString.Split(new char | ); foreach (string score in scores) Console.WriteLine(score); ,9)

37、替换字符或字符串 使用 Replace(, ) 可以用来把字符中的原字符串替换成新字符串。,处理字符串,.Replace(, );,string theString = “Hello world!”; theString = theString.Replace(“!”, “ from C#!”); Console.WriteLine(theString);,Hello world from C#!,10) 删除子字符串 使用 Remove() 可以删除从指定位置开始到字符串末尾的子字符串,处理字符串,.Remove();,string theString = “Hello world!”; t

38、heString = theString.Remove(5); Console.WriteLine(theString);,Hello,10) 删除子字符串 使用 Remove(, ) 可以删除从指定位置开始到指定长度的子字符串。,处理字符串,.Remove(, );,string theString = “Hello world!”; theString = theString.Remove(5, 6); Console.WriteLine(theString);,Hello!,11) 插入字符串 使用 Insert(, ) 可以在指定位置插入子字符串。,处理字符串,.Insert(, );

39、,string theString = “Hello world!”; theString = theString.Insert(theString.Length-2, “ from C#”); Console.WriteLine(theString);,Hello world from C#!,12) 检查字符串中是否包含子字符串 使用 Contains() 可返回字符串中是否包含子字符串。,处理字符串,.Contains();,string theString = “Hello world!”; bool isContainHello = theString.Contains(“Hello

40、”); Console.WriteLine(isContainHello );,True,处理字符串,再看一个例子,来进一步了解字符串方法的应用,DateTime结构,.NET框架类库中的DateTime结构用于表示日期和时间,它可以表示公元0001年1月1日午夜12:0:0到公元9999年12月31日晚上11:59:59之间的日期和时间。 DateTime结构中的成员: 1. 获取当前日期和时间 使用DateTime结构中的Now属性可以获取当前系统的日期和时间 使用DateTime结构中的Today属性可以获取当前系统的日期 如: DateTime date=DateTime.Now; D

41、ateTime day=DateTime.Today; 还可以指定特定的日期和时间: 如: DateTime day=new DateTime(2010,3,21);,DataTime结构, 2. 获取年、月、日 使用DataTime结构中的Date属性可以获取DataTime的日期部分。 使用DataTime结构中的Year属性、Month属性、Day属性可以获取日期中的年份、月份、日(返回类型为整型) 如: DataTime day=DateTime.Today; int y=day.Year; int m=day.Month; int d= day.Day; 使用DataTime结构中的

42、DayOfWeek属性可以根据日期计算出该日期对应的星期。 如: DataTime day=DateTime.Today; Console.WriteLine(day.DayOfWeek);,DataTime结构, 3. 获取时、分、秒 使用DataTime结构中的Hour属性、 Minute属性、Second属性可以获取日期中的小时数、分钟数和秒数。(返回类型均为整型) 如: DataTime day=DateTime.Now; int h=day.Hour; int m=day.Minute; int s= day.Second;,DataTime结构,- 4. 将日期转换为字符串 使用D

43、ataTime结构中的ToLongDateString、ToLongTimeString方法可以把DateTime转成字符串,且以长格式表示日期或时间。 使用DataTime结构中的ToShortDateString、ToShortTimeString方法可以把DateTime转成字符串,且以短格式表示日期或时间。 DataTime day=DateTime.Today; Console.WriteLine(day.ToLongDateString(); Console.WriteLine(day.ToShortTimeString();,思考,设计一个控制台应用程序,将当前时间转换为秒数。,

44、2.5 表达式和运算符 C#中的表达式类似于数学运算中的表达式,是由操作数和运算符组成的。操作数可以是一个变量、常量或者另外一个表达式,运算符指明了作用于操作数的操作方式。 运算符大致分为3类,一元运算符(一个操作数)、二元运算符(两个操作数)和三元运算符(三个操作数)。,算数运算符 一元运算符,二元运算符,前置和后置自加/自减运算符,位运算符 x =6, y =10,操作符优先级,温馨提示,在输写运算符时,就在其两侧添加空格,以增加代码的清晰度。 y = x*3+5; 一元操作符和操作数之间不留空格。 例:i+,思考,设计一个控制台应用程序,如果有两个整数存储在变量var1,var2中,该进

45、行什么样的布尔测试,看看其中的一个是否大于10? 设计一个控制台应用程序,运用条件运算符实现将小写字母转换成大写字母。,类型转换,类型转换的概念 数据在计算机中是以二进制位的形式表示的,程序设计语言可根据数据的类型来对这些二进制位进行解释,进而控制数据的显示和运算,同一串二进制位,不同的数据类型对它有不同的解释。 就比如说,同一串二进制位,在char 类型中表示字符 A,而在 ushort 中却表示数值 65 (字符串A的ASCII码值)。,类型转换,类型转换是指将变量从一种类型转换成另一种类型。 在 C# 中,类型转换有两种形式: 隐式转换:当从类型A到类型B的转换,不会造成数据的丢失时,将

46、由编译器自动进行隐式类型的转换。 显式转换:当从类型A到类型B的转换,可能造成使数据的丢失时,就必需进行显式类型转换。,类型转换,隐式类型转换 隐式类型转换是由编译器自动完成的,不需要做任何工作,考虑如下代码: 当变量 var2 所能表示的所有值,都在变量 var1 的取值范围内,将由编译器自动进行隐式类型的转换。,var1 = var2;,类型转换,隐式类型转换示例: char 和 ushort 的值是可以互换的,它们都能表示65536种不同值,所以将由编译器自动进行隐式类型的转换,考虑如下代码:,char sourceVar = a ushort destinationVar = sour

47、ceVar; Console.WriteLine(“sourceVar val: 0”, sourceVar); Console.WriteLine(“destinationVar val: 0”, destinationVar);,sourceVar val: a destinationVar val: 97,类型转换,隐式类型转换: 隐式类型转换的规则: 任何类型A,只要其取值范围完全包含在类型B的取值范围内,就可进行类型A到类型B的隐式类型转换。,byte isByte = 65; char isChar = isByte; ushort isUShort = isChar; int i

48、sInt = isUShort; long isLong = isInt; float isFloat = isLong; double isDouble = isFloat;,隐式转换注意事项 1. 转换规则是由低精度的数据自动向高精度的数据进行转换。 2. 允许数值范围小的类型向数值范围大的类型转换,允许无符号整数类型向有符号整数类型转换。 3. 隐式转换包括:标识转换、隐式数值转换、隐式枚举转换、隐式引用转换、装箱转换、隐式常数表达式转换和用户自定义的隐式转换。 4. 隐式枚举转换允许十进制0转换成任何枚举类型,其他类型不存在这种转换。 如:enum WeekDaySun,Mon,Tue,Wed,Thu,Fri,Sat WeekDay days; Days=0;,类型转换,显式类型转换 当需要进行的转换可能会造成数据的丢失,也就是说当类型B所能

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1