.NET类型转型的四种做法:

◆ 强制转型:(int)变量名称

◆ int.Parse(字符串变量名称)

◆ Convert.To类型(变量名称)

◆ TryParse


强制转型 (casting)

◆ 浮点数会做无条件舍去,失去精确度

◆ 可处理 object 转 int,但遇到 object 为 null 时会产生 error

◆ 某些情况下,如 object 转型成 int,有时正常,但有时会无故发生 error,原因不明

◆ 无法处理 string 转 int (程序中常会用到的功能)

◆ 千万不可用来处理 char 类型,否则传回的是 ASCII 码,而不是字面上的数字

int.Parse(字符串变量名称)

◆ 只能处理 string 转 int 或其它类型,无法处理 string 以外的类型,功能有限

◆ 遇到 string 为 null 或 string.Empty 时,仍会造成程序 error

◆ 亦可变化使用:「类型.Parse(string)」,但参数只能丢 string

Convert.To类型(变量名称)

◆ 可处理所有 .NET 的类型、功能完整

◆ 可处理 null,几乎不会因转型造成程序 error

◆ 透过「Convert.ToInt32(变量)」转型成 int 时,变数若为 object 或 string 类型,当其值为 null 时,会传回 0,不会造成程序 error

◆ 续前一点,若此 string 类型的变量,其原始值为 string.Empty,在转型成 int 时,仍会造成程序 error

◆ 浮点数会做四舍五入

◆ 千万不可用来处理 char 类型,否则传回的是 ASCII 码,而不是字面上的数字

测试范例:

protected void Page_Load(object sender, EventArgs e)
{
char i1 = '0';
char i2 = '9';
string i1 = null;
string i2 = "9";
string i3 = string.Empty;
int i1 = 0;
int i2 = 9;
double i1 = 1.2345;
double i2 = 1.5678;
object i1 = null;
object i2 = 9; // 浮点数会做无条件舍去,某些情况会无故产生 error
Response.Write((int)i1 + ", " + (int)i2 + "<br>"); // 只能处理「字符串」转型成其它类型,功能有限
Response.Write(int.Parse(i1) + ", " + int.Parse(i2) + "<br>"); // 可处理所有类型及 Null,但浮点数会做四舍五入。推荐使用,但不可处理 char 类型
Response.Write(Convert.ToInt32(i1) + ", " + Convert.ToInt32(i2) + "<br>");
}

遇到要特别注意数字、金额精确度的项目时,应特别注意。

TryParse

这个方法是 .NET Framework 2.0 版的新功能。将数字的字串表示转换成它的对等32 位元帶正负号的整数。传回指示作业是否成功的值。 TryParse 方法与 Parse 方法类似,除了TryParse 方法在转换失败時不会掷回例外状况以外。

.NET类型转型的四种做法(转)的更多相关文章

  1. C++ socket 传输不同类型数据的四种方式

    使用socket传输组织好的不同类型数据,有四种不同的方式(我知道的嘿嘿): a. 结构体 b. Json序列化 c. 类对象 d. protobuf 下面逐一整理一下,方便以后进行项目开发. 1. ...

  2. JS判断是否是数组的四种做法

    一.前言 如何判断一个对象或一个值是否是一个数组,在面试或工作中我们常常会遇到这个问题,既然出现频率高,想着还是做个整理,那么本文主要基于几种判断方式,以及方式判断的原理,是否存在问题展开讨论. 二. ...

  3. JS判断是否是数组的四种做法(转载)

    转载来源 https://www.cnblogs.com/echolun/p/10287616.html 一.前言 如何判断一个对象或一个值是否是一个数组,在面试或工作中我们常常会遇到这个问题,既然出 ...

  4. UNICODE串转换成char类型串的四种方法

    1. 调用 WideCharToMultiByte() API int WideCharToMultiByte (     UINT    CodePage,                //1 U ...

  5. Delphi中定义了四种布尔类型:Boolean,ByteBool,WordBool和LongBool。后面三种布尔类型是为了与其他语言兼容而引入的

    bool是LongBool类型. Delphi中定义了四种布尔类型:Boolean,ByteBool,WordBool和LongBool.后面三种布尔类型是为了与其他语言兼容而引入的,一般情况下建议使 ...

  6. ORCAL 数据库的约束以及SQL语言的四种类型

    oracle数据库约束: 定义:要输入的这个值是一个什么样的值, 或者是哪个范围内的值 作用: 确保完整性, 确保精确性 1, 非空约束(not null) 记录一条信息的时候如果用户名和密码没有被记 ...

  7. JavaScript数据类型判断的四种方法

    码文不易啊,转载请带上本文链接呀,感谢感谢 https://www.cnblogs.com/echoyya/p/14416375.html 本文分享了JavaScript类型判断的四种方法:typeo ...

  8. C#中方法的参数的四种类型

    C#中方法的参数有四种类型:       1. 值参数类型  (不加任何修饰符,是默认的类型)       2. 引用型参数  (以ref 修饰符声明)       3. 输出型参数  (以out 修 ...

  9. C++中的四种转型操作符

    在具体介绍C++中的四种转型操作符之前,我们先来说说旧式转型的缺点: ①它差点儿同意将不论什么类型转换为不论什么其它类型,这是十分拙劣的.假设每次转型都可以更精确地指明意图,则更好. ②旧式转型难以辨 ...

随机推荐

  1. solidity中的memory和 storage详解

    Solidity是一种智能合约高级语言,运行在Ethereum虚拟机(EVM)之上.这里我会讲解一下关键字storage和memory的区别. storage的结构是在合约部署创建时,根据你的合约中状 ...

  2. python leveldb 文档

    标签(空格分隔): python leveldb import leveldb db = leveldb.LevelDB('./db') db.Put('hello', 'world') print ...

  3. POJ 3084 Panic Room(最大流最小割)

    Description You are the lead programmer for the Securitron 9042, the latest and greatest in home sec ...

  4. js经典试题之运算符的优先级

    js经典试题之运算符 1.假设val已经声明,可定义为任何值.则下面js代码有可能输出的结果为: console.log('Value is ' + (val != '0') ? 'define' : ...

  5. 软工2017第五周——个人PSP

    10.13 --10.19本周例行报告 1.PSP(personal software process )个人软件过程. 类型 任务 预计时间 开始时间                结束时间 中断时 ...

  6. M2迭代分数分配

    M2中仍然依据每个成员的工作量,贡献度分配相应得分. 成员 得分 申开亮 25 王皓南 24 许晋 21 黄玉冰 20 王宇杰 18 吴润凡 17 巴丹益昔 15

  7. 有关c#的学习笔记整理与心得

    [ 塔 · 第 一 条 约 定 ] 整理c#:Array Arraylist List Hashtable Dictionary Stack Queue等 Array 的容量是固定的,而 ArrayL ...

  8. XDA-University: Getting Started

    XDA-University: Getting Started A while back, we introduced XDA-University to the world, an ongoing ...

  9. ArrayList遍历(JAVA)

    假如有个ArrayList变量如下: ArrayList<String> list = new ArrayList<String>(); list.add("arra ...

  10. 3dContactPointAnnotationTool开发日志(二三)

      smpl模型得是一个整体,于是我让子物体的选项卡的删除按钮消失,这样就不会删除不必要的东西然后产生奇怪现象: