<C#入门经典>学习笔记3之类型转换与枚举
来源:互联网 发布:优绘下载 mac版 编辑:程序博客网 时间:2024/05/01 11:42
变量类型转换
一般情况下,不同类型的变量使用不同的模式来表示数据,需要对数据进行类型转换,分为隐式转换和显式转换。
隐式转换
定义
从类型A到类型B的转换可以在所有情况下进行,执行转换的规则非常简单,可以让编译器执行转换。
操作
不需要做任何工作,也不需要另外编写代码 Var1 = Var2
规则
任何类型A,只要其取值范围完全包含在类型B的取值范围内,就可以隐式转换为类型B。(参考学习笔记1中的变量定义范围)
注
bool和string没有隐式转换,但数值类型有隐式转换(char存储的是数值,所以char被当作一个数值类型)
显式转换
定义
从类型A到类型B的转换只能在某些情况下进行,转换的规则比较复杂,应进行某种类型的处理
操作
1、强制转换就是强迫数据从一种类型转换为另一种类型,其语法比较简单 。 如
(byte) Var1;
注
当需要显示地把一种数据类型转换为另一种数据类型时,最好能够了解是否有数据丢失了。若不知道,可能发生严重的问题。方法如下:
1)简单地检查源变量的值,把它与目标变量的取值范围进行比较
2)迫使系统特别注意运行期间的转换。使用关键字checked和unchecked,称为表达式的溢出检查上下文,如:
short shortResult float floatVal = 10.5; shortResult = checked((short)floatVal);
3)配置应用程序,让这种类型的表达式都包含checked关键字,除非表达式明确使用unchecked关键字。
2.使用Convert命令进行显示转换
1)Conver.ToXXX()的命令是把字符串转换为数据,字符串必须是数值的有效表达方式,该数还必须是不会溢出的数。
2)数值的有效表达方式:首先是一个可选符号(+或者-),然后是0位或多位数字,一个句点后跟一位或多位数值,接着是一个可选的e或E,后跟一个可选符号和一位或者多位数字(在这个序列之前或之后)和空格。例:-1.2451e-24
3)convert命令:
注
1)它们总是进行溢出检查,checked和unchecked关键字以及项目属性设置不起作用。
2)若需转换成int型,使用Convert.ToInt32().(它们就可以在除C#以外的其它.NET兼容语言中使用)
3)类型转换的优先级与其他一元运算符一样,都是优先级中的最高级
枚举
它们允许定义一个类型,其中包含提供的限定值集合中的某一个值。
定义
可以使用关键字enum来定义枚举
enum <typeName>:<underlyingType> { <value1>, <value2>, <value3>, ... <valuen> }
说明
1、枚举使用一个基本类型(underlyingType)来存储。枚举类型可以提取的每个值都存储为该基本类型的一个值,默认情况下该类型为int.
2、枚举的基本类型可以是byte、sbyte,short,ushort,int,uint,long,ulong.
3、默认情况下,每个值都会根据定义的顺序(从0开始),自动赋给对应的基本类型值。若中间某一枚举值已被初始化,那么此值可以作为另一枚举的基础值,没有被赋值的任何值都会自动获取一个初始值。
示例1
namespace{ enum orientation : byte { north = 1, south = 2, east = 3, west = 4 } class Program { static void Main() { byte directionByte; orientation myDirection = orientation .north; directionByte = (byte)myDirection; } }}
*注*
1)类型定义代码需放在名称空间中。
2)即使枚举的基本类型是byte,仍需将枚举型转换成基本类型byte,若要将byte类型转换为orientation,同样也需要转换。如:
myDirection = (orientation)directionByte;
3)不是所有byte类型的值都可以映射成已定义的枚举值,需与定义相符。
示例2
namespace{ enum orientation : byte { north = 1, south = 2, east = 3, west = 4 } class Program { static void Main() { string directionString; orientation myDirection = orientation .north; directionString= Convert.ToString(myDirection); } }}
*注*
1)不能使用(string)强制类型转换,但可以使用变量本身的ToString()命令,如:
directionString = myDirection.ToString();
2)可以将String转换为枚举值,需用关键字Enum.Parse,如:
string mystring = “north”; orientation myDirection = (orientation)Enum.Parse(typeof(orientation),mystring);
3)并非所有的字符串值都会映射为一个枚举值,若传送的值不是枚举值中的一个(区分大小写),就会产生错误。
- <C#入门经典>学习笔记3之类型转换与枚举
- C#入门经典学习5-类型转换
- C#入门经典学习笔记之数据类型
- c#经典入门学习笔记-结构类型与对象的比较
- 《C#入门经典》学习笔记(集合、比较和转换)
- 《C#入门经典》学习笔记(集合、比较和转换)
- <C#入门经典>学习笔记1之初识C#
- c#经典入门--学习笔记
- c#经典入门--学习笔记
- C#学习笔记-类型转换
- C#学习笔记之集合(入门经典 11.)
- <C#入门经典>学习笔记2之控制流程
- <C#入门经典>学习笔记之结构、数组及字符串
- C#入门经典学习3-类型运算符
- 黑马程序员之C#学习笔记:枚举以及将字符串转换为枚举学习心得
- unity3D-游戏/AR/VR在线就业班 C#入门枚举类型学习笔记
- c# 学习之8 枚举类型和int string的转换
- C#学习笔记_4.C#类型转换
- bzoj 3531: [Sdoi2014]旅行 树链剖分
- 减肥计划走起
- POJ 2976 裸的01分数规划
- 求x的n次方
- linux下查看已经安装的jdk 并卸载jdk
- <C#入门经典>学习笔记3之类型转换与枚举
- bzoj 4459: [Jsoi2013]丢番图 数学
- 快速排序(qsort)
- Has your conversion rate changed? An introduction to Bayesian timeseries analysis with Python.
- 输入成绩查看等级
- 各种优化方法总结比较(sgd/momentum/Nesterov/adagrad/adadelta)
- 设计模式C++策略模式
- 关于nginx 403问题
- js设置cookie,为cookie中设置多个key value