马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
语言是不是不是最重要的?c#中甚么情形下用(int)甚么情形下用Convert.ToInt32?
好比说有一个string型的3,要给它转换成int型的是用(int)3,仍是用Convert.ToInt32(3);仍是两个都能够用,为何?
解答:这两个都是转换成整型的,只是它们的长度分歧。int为16位的,而上面的谁人是32位的
起首,我要指出的是,在C#中,int实在就是System.Int32,即都是32位的。
其次,(int)和Convert.ToInt32是两个分歧的观点,前者是范例转换,尔后者则是内容转换,它们其实不老是等效的。我们很分明C#供应范例反省,你不克不及把一个string强迫转换成int,隐式转换就加倍不成能,比方以下的代码就行欠亨了:
stringtext="1412";
intid=(int)text;
由于string和int是两个完整分歧而且互不兼容的范例。说到这里,你大概会问甚么才算是兼容的呢?实在,可以利用(int)举行强范例转换的只能是数值范例了,比方long、short、double等,不外举行这类转换时你必要思索精度成绩。
但是,我们很分明下面的代码中text实践上贮存的是一个数值,我们但愿把这个数值提掏出来并以int的情势贮存起来以便往后的运算利用,那末你就必要举行内容转换了。内容转换也叫内容注释,我们把下面的代码稍稍修正就能够到达目标了:
stringtext="1412";
intid=Convert.ToInt32(text);
除此以外,你还可使用Int32.Parse和Int32.TryParse来举行注释。
别的,你发明Convert.ToInt32有良多重载版本,比方Convert.ToInt32(doublevalue);,当我们用这个版原本把一个double转换成int时,ToInt32会反省被转换的数值是不是可以用int暗示,便是否会产生“越界”,假如是就会抛出OverflowException,不然就会为你转换,但利用(int)举行强迫转换,假如被转换的数值年夜于Int32.MaxValue,那末你将失掉一个毛病的了局,比方上面的代码:
doubled=Int32.MaxValue+0.1412;
inti=(int)d;
不外不管你举行甚么数值转换,精度成绩都是必需思索的。我感觉可以顶到50楼,出乎意料的是大家居然纷纷写出自己的博文,还被编辑做成了专题,置于首页头条。 |