若要判斷字串是否為指定數值型別的有效表示,請使用由所有基本數值類型以及類似DateTime和IPAddress這些型別實作的靜態TryParse
方法。 下列範例示範如何判斷 「108」 是否為有效的 int。
int i = 0;
string s = "108";
bool result = int.TryParse(s, out i); //i now = 108
如果字串包含非數值字元,或者數值對於您指定的特定類型來說過大或過小,則 TryParse
傳回 false,並將 out 參數設定為零。 否則,它會傳回 true,並將 out 參數設定為字串的數值。
備註
字串可能僅包含數字字符,但對於您使用的方法所屬類型而言,仍然可能無效。 例如,“256” 不是 的有效值 byte
,但它對 int
有效。 “98.6” 不是 int
的有效值,但它是 decimal
的有效值。
範例
下列範例示範如何將TryParse
與long
、byte
和decimal
值的字串表示搭配使用。
string numString = "1287543"; //"1287543.0" will return false for a long
long number1 = 0;
bool canConvert = long.TryParse(numString, out number1);
if (canConvert == true)
Console.WriteLine($"number1 now = {number1}");
else
Console.WriteLine("numString is not a valid long");
byte number2 = 0;
numString = "255"; // A value of 256 will return false
canConvert = byte.TryParse(numString, out number2);
if (canConvert == true)
Console.WriteLine($"number2 now = {number2}");
else
Console.WriteLine("numString is not a valid byte");
decimal number3 = 0;
numString = "27.3"; //"27" is also a valid decimal
canConvert = decimal.TryParse(numString, out number3);
if (canConvert == true)
Console.WriteLine($"number3 now = {number3}");
else
Console.WriteLine("number3 is not a valid decimal");
健全的程式設計
基本數值類型也支援 Parse
這個靜態方法,當字串不是有效的數值時,將拋出例外狀況。
TryParse
通常更有效率,因為它只會在數位無效時傳回 false。
.NET 安全性
一律使用 TryParse
或 Parse
方法來驗證文本框和下拉式方塊等控件的用戶輸入。