Convert.ToInt32是什么意思
1、convert是一個(gè)類(lèi),代表類(lèi)型轉(zhuǎn)換的類(lèi)。ToInt32()是Convert的一個(gè)方法,這個(gè)方法的功能就是把指定的內(nèi)容轉(zhuǎn)換成整數(shù)類(lèi)型。 2、comn是一個(gè)對(duì)象,一個(gè)具有Text屬性的對(duì)象。它的值也就是一個(gè)string類(lèi)型。 假如說(shuō)comn.Text代表的是一個(gè)輸入文本框里
Convert.ToInt32
將字符串轉(zhuǎn)換成數(shù)字
方法:Convert.ToInt32(string value,int fromBa)
fromBa為進(jìn)制(2,8,10,16)
如:將2進(jìn)制(string)轉(zhuǎn)換成10進(jìn)制(int)
string strBa2="0101";
int intBa10=Convert.ToInt32(strBa2,2);
結(jié)果:5
Convert.ToInt32、int.Par的區(qū)別
Convert.ToInt32、(int)和int.Par三者的區(qū)別:
前者適合將object類(lèi)類(lèi)型轉(zhuǎn)換成int類(lèi)型,如Convert.ToInt32(ssion["shuzi"]);
(int)適合簡(jiǎn)單數(shù)據(jù)類(lèi)型之間的轉(zhuǎn)換;
int.Par適合將string類(lèi)類(lèi)型轉(zhuǎn)換成int類(lèi)型,如int.Par(ssion["shuzi"].ToString())。
(1)這兩個(gè)方法的最大不同是它們對(duì)null值的處理方法:
Convert.ToInt32(null)會(huì)返回0而不會(huì)產(chǎn)生任何異常,但int.Par(null)則會(huì)產(chǎn)生異常。
沒(méi)搞清楚Convert.ToInt32和int.Par()的細(xì)細(xì)微區(qū)別時(shí)千萬(wàn)別亂用,否則可能會(huì)產(chǎn)生無(wú)法預(yù)料的結(jié)果,舉例來(lái)說(shuō):假如從url中取一個(gè)參數(shù)page的值,我們知道這個(gè)值是一個(gè)int,所以即可以用Convert.ToInt32(Request.QueryString["page"]),也可以用,int.Par(Request.QueryString["page"]),但是如果page這個(gè)參數(shù)在url中不存在,那么前者將返回0,0可能是一個(gè)有效的值,所以你不知道url中原來(lái)根本就沒(méi)有這個(gè)參數(shù)而繼續(xù)進(jìn)行下一下的處理,這就可能產(chǎn)生意想不到的效果,而用后一種辦法的話(huà)沒(méi)有page這個(gè)參數(shù)會(huì)拋出異常,我們可以捕獲異常然后再做相應(yīng)的處理,比如提示用戶(hù)缺少參數(shù),而不是把參數(shù)值當(dāng)做0來(lái)處理。
(2)還有一點(diǎn)區(qū)別就是
a. Convert.ToInt32(double value)
如果 value 為兩個(gè)整數(shù)中間的數(shù)字,則返回二者中的偶數(shù);即 3.5轉(zhuǎn)換為4,4.5 轉(zhuǎn)換為 4,而 5.5 轉(zhuǎn)換為 6。 不過(guò)4.6可以轉(zhuǎn)換為5,4.4轉(zhuǎn)換為4
b. int.Par("4.5")
直接報(bào)錯(cuò):"輸入字符串的格式不正確".
c. int(4.6) = 4
Int轉(zhuǎn)化其他數(shù)值類(lèi)型為Int時(shí)沒(méi)有四舍五入,強(qiáng)制轉(zhuǎn)換
int.Par是轉(zhuǎn)換String為int
Convert.ToInt32是轉(zhuǎn)換繼承自O(shè)bject的對(duì)象為int的.
你得到一個(gè)object對(duì)象,你想把它轉(zhuǎn)換為int,用int.Par就不可以,要用Convert.ToInt32.
總結(jié):
(1)Convert.ToInt32的參數(shù)比較多,Int.Par只能轉(zhuǎn)換string類(lèi)型的.
(2)Par就是把String轉(zhuǎn)換成int,char,double....等,也就是*.Par(string) 括號(hào)中的一定要是string.
(3)Convert可以提供多種類(lèi)型的轉(zhuǎn)換,也就是Convert.*()括號(hào)中可以為很多種類(lèi)型(包括string).
Convert.ToInt32()與(int)強(qiáng)轉(zhuǎn)有什么不同(轉(zhuǎn))
兩個(gè)都是轉(zhuǎn)換成整型的,只是它們的長(zhǎng)度不同。int為16位的,而下面的那個(gè)是32位的
首先,我要指出的是,在 C# 中,int 其實(shí)就是 System.Int32,即都是32位的。
其次,(int) 和 Convert.ToInt32 是兩個(gè)不同的概念,前者是類(lèi)型轉(zhuǎn)換,而后者則是內(nèi)容轉(zhuǎn)換,它們并不總是等效的。我們很清楚 C# 提供類(lèi)型檢查,你不能把一個(gè) string 強(qiáng)制轉(zhuǎn)換成 int,隱式轉(zhuǎn)換就更加不可能,例如如下的代碼就行不通了:
string text = "1412";
int id = (int)text;
然而,我們很清楚上面的代碼中 text 實(shí)際上儲(chǔ)存的是一個(gè)數(shù)值,我們希望把這個(gè)數(shù)值提取出來(lái)并以 int 的形式儲(chǔ)存起來(lái)以便日后的運(yùn)算使用,那么你就需要進(jìn)行內(nèi)容轉(zhuǎn)換了。內(nèi)容轉(zhuǎn)換也叫內(nèi)容解釋?zhuān)覀儼焉厦娴拇a稍稍修改就可以達(dá)到目的了:
string text = "1412";
int id = Convert.ToInt32(text);
除此之外,你還可以使用 Int32.Par 和 Int32.TryPar 來(lái)進(jìn)行解釋。
另外,你發(fā)現(xiàn) Convert.ToInt32 有很多重載版本,例如 Convert.ToInt32(double value);,當(dāng)我們用這個(gè)版本來(lái)把一個(gè) double 轉(zhuǎn)換成 int 時(shí),ToInt32 會(huì)檢查被轉(zhuǎn)換的數(shù)值是否能夠用 int 表示,即是否會(huì)發(fā)生“越界”,如果是就會(huì)拋出 OverflowException,否則就會(huì)為你轉(zhuǎn)換,但使用 (int) 進(jìn)行強(qiáng)制轉(zhuǎn)換,如果被轉(zhuǎn)換的數(shù)值大于 Int32.MaxValue,那么你將得到一個(gè)錯(cuò)誤的結(jié)果,例如下面的代碼:
year = Convert.ToInt32(Console.ReadLine()); 求詳細(xì)解釋
控制臺(tái)應(yīng)用程序啊,Convert.ToInt32(Console.ReadLine()) 就是你控制臺(tái)輸入一個(gè)值,通過(guò)Convert.ToInt32()轉(zhuǎn)換為Int類(lèi)型。。。
Int32 表示將數(shù)字字符串轉(zhuǎn)換為32位有效的數(shù)字符號(hào)
在C#中Int運(yùn)算符分為32位和64位,int32=int,int64=long,
在ASP.NET中Convert.ToInt32()與(int)強(qiáng)轉(zhuǎn)有什么不同
兩個(gè)都是轉(zhuǎn)換成整型的,只是它們的長(zhǎng)度不同。int為16位的,而下面的那個(gè)是32位的
首先,我要指出的是,在
C#
中,int
其實(shí)就是
System.Int32,即都是32位的。
其次,(int)
和
Convert.ToInt32
是兩個(gè)不同的概念,前者是類(lèi)型轉(zhuǎn)換,而后者則是內(nèi)容轉(zhuǎn)換,它們并不總是等效的。我們很清楚
C#
提供類(lèi)型檢查,你不能把一個(gè)
string
強(qiáng)制轉(zhuǎn)換成
int,隱式轉(zhuǎn)換就更加不可能,例如如下的代碼就行不通了:
string
text
=
"1412";
int
id
=
(int)text;
因?yàn)?br />string
和
int
是兩個(gè)完全不同并且互不兼容的類(lèi)型。說(shuō)到這里,你可能會(huì)問(wèn)什么才算是兼容的呢?其實(shí),能夠使用
(int)
進(jìn)行強(qiáng)類(lèi)型轉(zhuǎn)換的只能是數(shù)值類(lèi)型了,例如
long、short、double等,不過(guò)進(jìn)行這種轉(zhuǎn)換時(shí)你需要考慮精度問(wèn)題。
然而,我們很清楚上面的代碼中
text
實(shí)際上儲(chǔ)存的是一個(gè)數(shù)值,我們希望把這個(gè)數(shù)值提取出來(lái)并以
int
的形式儲(chǔ)存起來(lái)以便日后的運(yùn)算使用,那么你就需要進(jìn)行內(nèi)容轉(zhuǎn)換了。內(nèi)容轉(zhuǎn)換也叫內(nèi)容解釋?zhuān)覀儼焉厦娴拇a稍稍修改就可以達(dá)到目的了:
string
text
=
"1412";
int
id
=
Convert.ToInt32(text);
除此之外,你還可以使用
Int32.Par
和
Int32.TryPar
來(lái)進(jìn)行解釋。
另外,你發(fā)現(xiàn)
Convert.ToInt32
有很多重載版本,例如
Convert.ToInt32(double
value);,當(dāng)我們用這個(gè)版本來(lái)把一個(gè)
double
轉(zhuǎn)換成
int
時(shí),ToInt32
會(huì)檢查被轉(zhuǎn)換的數(shù)值是否能夠用
int
表示,即是否會(huì)發(fā)生“越界”,如果是就會(huì)拋出
OverflowException,否則就會(huì)為你轉(zhuǎn)換,但使用
(int)
進(jìn)行強(qiáng)制轉(zhuǎn)換,如果被轉(zhuǎn)換的數(shù)值大于
Int32.MaxValue,那么你將得到一個(gè)錯(cuò)誤的結(jié)果,例如下面的代碼:
double
d
=
Int32.MaxValue
+
0.1412;
int
i
=
(int)d;
不過(guò)無(wú)論你進(jìn)行什么數(shù)值轉(zhuǎn)換,精度問(wèn)題都是必須考慮的。