Java 開發者閱讀 C# 代碼時,常遇到 `int.TryParse(str.Split('-')[0], out leftIndex)` 這類組合寫法。本文拆解其邏輯並指出潛在風險。
if (int.TryParse(strRasterID.split("-")[0], out leftIndex) &&
int.TryParse(strRasterID.split("-")[1], out bottomIndex))
strRasterID.split("-"):按 - 分割字符串,返回 string[][0]、[1]:取分割後的第一、二個子串int.TryParse(..., out var):嘗試解析為整數,成功返回 true 並賦值給 out 參數若 strRasterID 不包含 -(如 "123"),分割後數組長度為 1,訪問 [1] 直接拋出 IndexOutOfRangeException。
var parts = strRasterID.Split('-');
if (parts.Length == 2
&& int.TryParse(parts[0], out leftIndex)
&& int.TryParse(parts[1], out bottomIndex)) {
// 解析成功
}
// Java 8+
String[] parts = strRasterID.split("-");
if (parts.length == 2) {
try {
leftIndex = Integer.parseInt(parts[0]);
bottomIndex = Integer.parseInt(parts[1]);
// 解析成功
} catch (NumberFormatException e) {
// 格式錯誤
}
}