如果x是一個值,那麼下面的語法不同,但實際上是相同的?第一個是第二個捷徑嗎?Convert.ToInt32(x)與(int)相同x
Convert.ToInt32(x);
(int)x;
還是可以在某些情況下使用一個超過另一個?
看在MSDN看起來第一個做的事情與第二個不同。
如果x是一個值,那麼下面的語法不同,但實際上是相同的?第一個是第二個捷徑嗎?Convert.ToInt32(x)與(int)相同x
Convert.ToInt32(x);
(int)x;
還是可以在某些情況下使用一個超過另一個?
看在MSDN看起來第一個做的事情與第二個不同。
(int)
是明確投哪裏Convert.ToInt
是方法
考慮:
string x = "1";
int temp = 0;
temp = Convert.ToInt32(x);
temp = (int)x; //This will give compiler error
鑄造適用於兼容的類型:
long l = 123;
int temp2 = (int)l;
double d = 123.2d;
int temp3 = (int)d; // holds only the int part 123
您可能會看到Explicit cast - MSDN
如果在沒有信息丟失風險的情況下無法進行轉換,編譯器要求您執行顯式轉換,其中 被稱爲轉換。強制轉換是一種明確通知編譯器 您打算進行轉換並且您知道可能發生數據丟失的方法。
感謝您的幫助'Convert.ToInt'看起來很有用 – whytheq
如果x
是一個包含數字的字符串,第一個會成功,但第二個會失敗。
object x = "1";
Convert.ToInt32(x); // works
(int)x; // fails
Convert.ToInt32是一種方法,其中有許多類型的對象轉換爲int
,並(int)
簡單鑄造 - 這可能會導致異常
他們是不同的。 int是一個轉換,ToInt32是一個轉換過程。它做得更多,更容忍不正確的數據,並且幾乎總是有效的。
對於(int)x
,內置於CLR和要求x
是數值型變量,否則會給出一個例外。
Convert.ToInt32
被設計成一個通用轉換函數,它可以從任何原始類型轉換爲int
。
除了此處的所有其他帖子,該Convert.ToInt32
往往是整數結果,而int
截斷它。
實施例:
float x = -0.6f;
var b = Convert.ToInt32(x);
var r = (int)x;
這樣做的結果是,b==-1
,BUR r==0
。
這是根本差異記住
你有答案仍然所以,如果你搜索http://stackoverflow.com/questions/3168704/when-to-use-a-cast-or-convert –
'int.Parse(x)' 和 'Convert.ToInt32(x)'?有什麼區別?它們是否相同? –