.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. vue学习笔记之:为何data是一个方法

    vue学习笔记之:为何data是一个方法 在vue开发中,我们可以发现,data中的属性值是在function中return出来的.可为何data必须是一个函数呢?我们先看官方的解释: 当一个组件被定 ...

  2. 使用HTML5制作loading图

    昨天发了一篇使用HTML5 canvas写的时钟的文章,今天发一篇关于使用HTML5制作loading图的文章. <!DOCTYPE html> <html> <head ...

  3. Thunder团队第三周 - Scrum会议4

    Scrum会议4 小组名称:Thunder 项目名称:i阅app Scrum Master:邹双黛 工作照片: 参会成员: 王航:http://www.cnblogs.com/wangh013/ 李传 ...

  4. scanf格式控制符的完整格式

    scanf格式控制的完整格式: %     *     m     l或h     格式字符 ①格式字符与printf函数中的使用方式相同,以%d.%o.%x.%c.%s.%f.%e,无%u格式.%g ...

  5. iOS- 移动端Socket UDP协议广播机制的实现

    1.前言    什么是UDP协议广播机制?      举一个例, 例如在一群人群中,一个人要找张三,于是你向人群里大喊一声(广播):“谁是张三”   如果它是张三,它就会回应你,在网络中也是一样的. ...

  6. C# WebBrowser控件详解

     作者:827969653     0.常用方法 Navigate(string urlString):浏览urlString表示的网址 Navigate(System.Uri url):浏览url表 ...

  7. thinkphp5学习记录一

    1 使用composer安装 composer create-project topthink/think=5.0.* tpblog --prefer-dist 2 配置环境vim /usr/loca ...

  8. perf record -c

    如果perf record -c -c后面接的是sample_period,也就是说你让这个事件没 我的loop进程一直在执行,我的CPU的频率是2.6G hz,也就是说每一秒会有2,600,000, ...

  9. Visual Stdio 2015打包安装项目的方法(使用Visual Studio Installer)

    首先在官网下载VS2015的Visual Studio Installer 1.创建安装项目 里面最左侧的框框有三个文件夹 1.“应用程序文件夹”即"Application Folder&q ...

  10. 【bzoj4229】选择 离线+LCT

    题目描述 现在,我想知道自己是否还有选择. 给定n个点m条边的无向图以及顺序发生的q个事件. 每个事件都属于下面两种之一: 1.删除某一条图上仍存在的边 2.询问是否存在两条边不相交的路径可以从点u出 ...