C# 转换
来源:互联网 发布:剑三丐姐捏脸数据邪魅 编辑:程序博客网 时间:2024/05/29 03:44
一、 转换(conversion)是接受一个类型的值并使它作为另一个类型的等价值的过程。 转换后的值应和原值一样的,但它是目标类型。二、 隐式转换 简单来说 端类型转换为长类型 不会丢失数据或精度,在这种情况下 语言自动做这些转换 叫做隐式转换三、 强制转换 对于源类型的任意值在被转换成目标类型时发生丢失的情况 语言不会自动转换, 如果希望对这样的类型进行转换 必须使用显式转换 叫做强制转换表达式四、 溢出检测上下文 类型转换时 检测结果溢出的能力,通过checked运算符和checked语句来实现 代码片段是否被检查 称作溢出检测上下文 如果我们指定一个表达式或一段代码为checked,CLR(公共语言运行时)会在转换产生溢出时抛出一个OverflowExecption异常 如果代码不是checked,转换会继续而不管是否产生溢出 默认的溢出检测上下文不是checked
class Program { static void Main(string[] args) { //UncheckedAndChecked.Unchecked(); QuoteConversion.QConversion(); Console.ReadKey(); } } class UncheckedAndChecked { public static void Unchecked() { ushort sh = 2000; byte sb; // unchecked和 checked 表达式 控制的是一个表达式 sb = unchecked((byte)sh); // 不做溢出检测,丢失位不发出警告,unchecked 可以省略 sb = (byte)sh; Console.WriteLine("sb:{0}", sb); sb = checked((byte)sh); // 使用checked表达式,丢失位发出警告 检测出溢出 并抛出OverflowException异常 Console.WriteLine("sb:{0}", sb); // unchecked和 checked 语句 语句控制的是一段代码块 unchecked { sb = (byte)sh; // 不做溢出检测,丢失位不发出警告 Console.WriteLine("sb:{0}", sb); checked { sb = (byte)sh; // 使用checked语句 ,丢失位发出警告 检测出溢出 并抛出OverflowException异常 Console.WriteLine("sb:{0}", sb); } } // unchecked和checked 语句 和表达式执行的功能一样 } } // 引用转换 class First { public int Field1=1; } class Second : First // Second 继承First 是First 的扩展 { public int Field2=2; } class QuoteConversion { public static void QConversion() { Second se = new Second(); // se 是Second的对象 First fi = (First)se; // fi 是First类型的对象 (First)可以不写 因为First 是Second的基类 语言已经为我们做了隐式转换 Console.WriteLine("{0}", fi.Field1); // fi 指向的是 First类型数值的内存 se指向的是Second类型数值的内存 Second内包含First 所以First以外的内存fi不可见 //Console.WriteLine("{0}", fi.Field2); // fi 调用不到Field2 Field2对于fi 不可见 Console.WriteLine("{0}", se.Field1); Console.WriteLine("{0}", se.Field2); } }
五、 隐式引用转换 所有的引用类型可以被隐式转换Object类型 任何类型可以隐式转换到它继承的接口 类可以隐式转换到:它继承的任何类,它实现的任何接口六、 显式引用转换 从Object到任何引用类型的转换 从基类到派生类的转换 有效的显式引用转换 1、自动进行了隐式转换 2、源引用的是null 例如: First fi = null; Second se = (Second)fi; // 允许转换,因为fi 为空
0 0
- C# 转换
- C# 转换
- C# 角度转换、弧度转换
- c#转换vb.net
- C#中的类型转换
- C#中的类型转换
- C#中的类型转换
- C#中的类型转换
- C#中的类型转换
- c#中的类型转换
- c#中的格式转换
- C#中的类型转换
- C#中的类型转换
- C#类型转换
- C#中的类型转换
- C# 类型转换
- c#摄氏华氏转换
- C#类型转换
- 数据库(一)
- 【HDU】 1788 Chinese remainder theorem again
- ipython需要2.7版本python, 手动编译; 解决yum在升级python2.7版本后的功能恢复; 解决pip命令失败问题.
- Android Studio Gradle 多渠道,多appkey签名打包
- Mina通信粘包处理
- C# 转换
- CentOS7区域设置
- 源码分析之Fresco
- 使用sqlyog远程连接mysql错误2003 cant connect to mysql 解决办法
- ZigBee 组,组表与场景
- iOS GPUImage 的使用
- repo sync失败 remote: warning: suboptimal pack - out of memory
- ListView属性详解 参考2
- 深入理解Map与Set---用集成HashSet来实现Map