# Convert.ToInt32 和直接 (int) 的差別 1. Convert.ToInt32 方法 功能: 將不同的數據類型(如字符串、浮點數、布爾值等)轉換為 int。它是 Convert 類的一部分,具有處理多種輸入類型的能力。 行為: -可以將 null 值轉換為 0,而不會拋出異常。 -可以處理一些字符串值,如 "123" 轉換為 123。 -如果字符串中包含無法轉換為整數的內容(如字母),會拋出 FormatException。 -支持將 true 轉換為 1,將 false 轉換為 0。 -將浮點數轉換為整數時,會執行四捨五入操作。 ``` string str = "123"; int number = Convert.ToInt32(str); // number = 123 bool isTrue = true; int boolToInt = Convert.ToInt32(isTrue); // boolToInt = 1 string nullString = null; int nullToInt = Convert.ToInt32(nullString); // nullToInt = 0 double doubleValue = 123.45; int roundedInt = Convert.ToInt32(doubleValue); // roundedInt = 123 ``` --- 2. (int) 類型轉換(強制轉換) 功能: 將兼容類型(如浮點數、長整數)直接轉換為 int。這種轉換是強制性的,適用於數值類型之間的轉換。 行為: -無法處理 null,如果試圖將 null 轉換為 int,會拋出 NullReferenceException。 -只能用於兼容的數值類型之間,例如 double 到 int,float 到 int。 -將浮點數轉換為整數時,會直接截斷小數部分(向下取整)。 -不支援從字符串轉換為 int,如果使用 (int) 強制轉換字符串,會出現編譯錯誤。 ``` double doubleValue = 123.45; int truncatedInt = (int)doubleValue; // truncatedInt = 123 long longValue = 123456789; int intFromLong = (int)longValue; // intFromLong = 123456789 // string str = "123"; // int number = (int)str; // 錯誤:無法直接從字符串轉換 ``` --- ### 大補帖 | 特性 | `Convert.ToInt32` | `(int)` 強制轉換 | |---------------|----------------------------------------------|-----------------------------------------| | 支持的輸入類型 | 多種類型(字符串、布爾值、數字類型、`null` 等) | 兼容的數值類型(`double`、`float`、`long` 等) | | `null` 處理 | 轉換為 0 | 拋出 `NullReferenceException` | | 字符串處理 | 可以處理,當字符串為有效數字時進行轉換 | 不支持 | | 浮點數轉整數 | 執行四捨五入 | 直接截斷小數部分(向下取整) | | 異常處理 | 當無法轉換時拋出 `FormatException` | 對於兼容類型不拋異常,但可能存在數據丟失 |
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up