在C#强制转换中,(int),Int32.Parse() 和 Convert.toInt32() 三种方法有何区别?

int 关键字表示一种整型,是32位的,它的 .NET Framework 类型为 System.Int32。

(int)表示使用显式强制转换,是一种类型转换。当我们从int类型到long、float、double 或decimal 类型,可以使用隐式转换,但是当我们从long类型到int类型转换就需要使用显式强制转换,否则会产生编译错误。

Int32.Parse()表示将数字的字符串转换为32 位有符号整数,属于内容转换[1]。

(int32.parse和int.parse()没什么区别,int在C#默认32位)

我们一种常见的方法:public static int Parse(string)。

如果string为空,则抛出ArgumentNullException 异常;

如果string格式不正确,则抛出FormatException 异常;

如果string的值小于MinValue或大于MaxValue的数字,则抛出OverflowException异常。

Convert.ToInt32() 则可以将多种类型(包括 object  引用类型)的值转换为 int  类型,因为它有许多重载版本[2]:

public static int ToInt32(object);

public static int ToInt32(bool);

public static int ToInt32(byte);

public static int ToInt32(char);

public static int ToInt32(decimal);

public static int ToInt32(double);

public static int ToInt32(short);

public static int ToInt32(long);

public static int ToInt32(sbyte);

public static int ToInt32(string);    ......

(int)和Int32.Parse(),Convert.ToInt32()三者的应用举几个例子:

例子一:

long longType = 100;

int intType  = longType;       // 错误,需要使用显式强制转换

int intType = (int)longType; //正确,使用了显式强制转换

例子二:

string stringType = "12345";

int intType = (int)stringType;           //错误,string 类型不能直接转换为 int  类型

int intType = Int32.Parse(stringType);   //正确

例子三:

long longType = 100;

string stringType = "12345";

object objectType = "54321";

int intType = Convert.ToInt32(longType);       //正确

int intType = Convert.ToInt32(stringType);     //正确

int intType = Convert.ToInt32(objectType);    //正确

例子四:

double doubleType = Int32.MaxValue + 1.011;

int intType = (int)doubleType;                       //虽然运行正确,但是得出错误结果

int intType = Convert.ToInt32(doubleType)            //抛出 OverflowException 异常

C#强制转换中(int)和Int32.Parse(),Convert.ToInt32()三者的区别:

第一个在对long 类型或是浮点型到int 类型的显式强制转换中使用,但是如果被转换的数值大于Int32.MaxValue 或小于 Int32.MinValue,那么则会得到一个错误的结果。

第二个在符合数字格式的string到int 类型转换过程中使用,并可以对错误的string数字格式的抛出相应的异常。

第三个则可以将多种类型的值转换为int类型,也可以对错误的数值抛出相应的异常。

无论进行什么类型的数值转换,数值的精度问题都是我们必须考虑的。

更多:http://www.cnblogs.com/linyechengwei/archive/2008/11/10/1330819.html

asp.net将object或string转为int的更多相关文章

  1. string和int的相互转换方法

    string转为int string str = "100000"; stringstream ss; ss << str; int i; ss >> i; ...

  2. string与int的相互转换C++(转)

    string与int之间的相互转换C++(转) #include<iostream> #include<string> #include<sstream> usin ...

  3. [C#]List<int>转string[],string[]转为string

    // List<int>转string[] public string[] ListInt2StringArray(List<int> input) { return Arra ...

  4. Jackson将json string转为Object,org.json读取json数组

    从json文件读取json string或者自定义json string,将其转为object.下面采用的object为map,根据map读取json的某个数据,可以读取第一级的数据name,后来发现 ...

  5. C#中String转int问题

    String转int主要有四种方法 1. int.Parse()是一种类容转换:表示将数字内容的字符串转为int类型. 如果字符串为空,则抛出ArgumentNullException异常: 如果字符 ...

  6. String转int数字格式异常问题

     写在前面的话 差不多一年前就计划写博客,可因为种种原因一直没有写,反而我身边的一些同学在我建议他们写博客不久之后就写了,比如张博同学,基本每次总结一个知识点就写一篇,这样不但方便自己以后查看翻阅,也 ...

  7. golang学习笔记13 Golang 类型转换整理 go语言string、int、int64、float64、complex 互相转换

    golang学习笔记13 Golang 类型转换整理 go语言string.int.int64.float64.complex 互相转换 #string到intint,err:=strconv.Ato ...

  8. Object、String、数组的 toString() 方法和 equals() 方法及java.util.Arrays

    public class Test { public static void main(String[] args) { int[] a = {1, 2, 4, 6}; int[] b = a; in ...

  9. 15_常用API_第15天(Object、String、StringBuffer、用户登陆注册)_讲义

    今日内容介绍 1.Object 2.String 3.StringBuilder 01API概念 A:API(Application Programming Interface) 应用程序编程接口 B ...

随机推荐

  1. 再学习sqlhelper

    在机房收费重构系统的时候,第一次学习sqlhelper.当时感觉比较简单,没有写博客总结,现在又经过了图书馆的学习,感觉还是有必要写一写的. SqlHelper是一个基于.NETFramework的数 ...

  2. WCF 出现无法理解Soap Action问题?

    在使用wcf部署到asp.net上时,遇到了,“无法理解soap Action 问题,”最简单的解决办法是更换NET framwork 高本版的框架. 不过不更换net framwork 框架,能否解 ...

  3. sql update left join 更新,字段内容分隔符提取

    UPDATE a SET [Province] = parsename(replace([FullName],'-','.'),2) from [dbo].[T_B_Emp] a left join ...

  4. C#操作Office.word(三)

    前面两篇博客讲解了怎么通过程序控制word的生成,包括生成文字.添加表格.添加图片等.这篇博客主要说一下怎么把word图片转换成pdf. using System; using System.Coll ...

  5. 循环获取<ul>下拉列表的的值。进行对比,正确的家样式

    $(function () { //要对比的值     var mysqlanswer = $("#wds-mysqlcuranswer").val(); // topic-opt ...

  6. Linux必学的60个命令【转载】

    Linux提供了大量的命令,利用它可以有效地完成大量的工 作,如磁盘操作.文件存  [转载地址]http://blog.chinaunix.net/uid-16728139-id-3154272.ht ...

  7. IOS 学习笔记(6) 控件 文本域(UITextField)的使用方法

    UITextField控件的诸多特性都和UITextView相似,比如成为输入文本焦点时键盘自动显示,支持长按弹出动作选项,能够接收输入事件(开始输入,修改内容,结束输入和点击回车等). 1.特有的特 ...

  8. AngularJS的启动引导过程

    原文:http://www.angularjs.cn/A137?utm_source=ourjs.com 目录: 引导之前 自动引导启动框架 手工引导启动框架 引导第1步:创建注入器 引导第2步:创建 ...

  9. Java并发编程总结4——ConcurrentHashMap在jdk1.8中的改进(转)

    一.简单回顾ConcurrentHashMap在jdk1.7中的设计 先简单看下ConcurrentHashMap类在jdk1.7中的设计,其基本结构如图所示: 每一个segment都是一个HashE ...

  10. Java面试题收集学习整理1

    1.java序列化.反序列化及serialVersionUID作用 ."=="和equals方法究竟有什么区别? .静态变量和实例变量的区别? 在语法定义上的区别:.Integer ...