2012-08-30 78 views
2

如果x是一個值,那麼下面的語法不同,但實際上是相同的?第一個是第二個捷徑嗎?Convert.ToInt32(x)與(int)相同x

Convert.ToInt32(x); 
(int)x; 

還是可以在某些情況下使用一個超過另一個?

看在MSDN看起來第一個做的事情與第二個不同。

+1

你有答案仍然所以,如果你搜索http://stackoverflow.com/questions/3168704/when-to-use-a-cast-or-convert –

+0

'int.Parse(x)' 和 'Convert.ToInt32(x)'?有什麼區別?它們是否相同? –

回答

3

(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

如果在沒有信息丟失風險的情況下無法進行轉換,編譯器要求您執行顯式轉換,其中 被稱爲轉換。強制轉換是一種明確通知編譯器 您打算進行轉換並且您知道可能發生數據丟失的方法。

+0

感謝您的幫助'Convert.ToInt'看起來很有用 – whytheq

1

如果x是一個包含數字的字符串,第一個會成功,但第二個會失敗。

object x = "1"; 
Convert.ToInt32(x); // works 
(int)x; // fails 
1

Convert.ToInt32是一種方法,其中有許多類型的對象轉換爲int,並(int)簡單鑄造 - 這可能會導致異常

1

他們是不同的。 int是一個轉換,ToInt32是一個轉換過程。它做得更多,更容忍不正確的數據,並且幾乎總是有效的。

1

對於(int)x,內置於CLR和要求x是數值型變量,否則會給出一個例外。

Convert.ToInt32被設計成一個通用轉換函數,它可以從任何原始類型轉換爲int

2

除了此處的所有其他帖子,該Convert.ToInt32往往是整數結果,而int截斷它。

實施例:

float x = -0.6f; 
    var b = Convert.ToInt32(x); 
    var r = (int)x; 

這樣做的結果是,b==-1,BUR r==0

這是根本差異記住

相關問題