2017-03-19 59 views
-1

我是新來的c#所以原諒我,但我只是想知道爲什麼我必須將int轉換爲int32?C#int&int32聲明

例如我聲明lowerRange是一個int,但後來當我讀取用戶輸入時,我必須將其轉換爲int32,否則它給我一個錯誤,說我「不能隱式地將類型'字符串'轉換爲' int'

或者我假設我必須轉換,因爲用戶輸入一個字符串,我必須將其轉換爲一個int,在這種情況下,我想知道爲什麼我必須聲明lowerRange爲int首位?

int lowerRange; 
... 
lowerRange = Convert.ToInt32(Console.ReadLine()); 
+0

'int'具有數字特徵。你可以在'int'上進行數字操作,而'string'則不可以,用戶輸入是字符串。 –

+0

「爲什麼我必須將int轉換爲int32」 - 它不是真的可以回答這個問題,因爲它們是相同類型的不同名稱,並且您不能在C#中表達它們之間的轉換......將字符串轉換爲int另一隻手覆蓋了一兩個或幾百個問題...... –

回答

8

Console.ReadLine()該方法返回string需要爲b e解析並轉換爲整數(使用Convert.ToInt32)如果要將其分配給lowerRange整數變量。

所以基本上你有這樣的:

int lowerRange; 
... 
string userInput = Console.ReadLine(); 
lowerRange = Convert.ToInt32(userInput); 

還要注意的是,爲什麼ReadLine方法返回一個字符串的原因是因爲用戶可以輸入任何輸入。所以,你可能想驗證用戶輸入使用TryParse方法有效數字,否則ToInt32方法將拋出一個異常:

string userInput = Console.ReadLine(); 
if (int.TryParse(userInput, out lowerRange)) 
{ 
    // The user entered a valid integer you can use the lowerRange variable here 
} 
else 
{ 
    Console.WriteLine("Please enter a valid number"); 
} 
+0

使用'TryParse'會有點保守,因爲如果輸入的是無效字符串,如果輸入'0'可能會導致意外行爲,它將返回'0'意味着即將到來的階段。使用'try' /'catch'可以讓你更好地控制做什麼。 – Everyone

0

我不得不將其轉換爲int32否則 給了我一個錯誤說我「不能隱式類型‘字符串’轉換爲 ‘詮釋’。

因爲到Console.ReadLine()返回的字符串是來自用戶的輸入。

或者我假設我必須轉換,因爲用戶正在輸入一個 字符串,我必須將其轉換爲一個int,這在這種情況下使我 想知道爲什麼我必須聲明lowerRange爲int的第一個地點?

你不需要聲明lowerRange作爲一個整數如果你想使用它作爲一個字符串。但是如果你想將它用作整數,那麼你需要將它轉換(使用Convert類)。