Phương thức int.TryParse() kiểm tra an toàn xem chuỗi có phải biểu diễn số nguyên hợp lệ không. Trả về bool (thành công/thất bại) và gán kết quả qua tham số out. Không ném exception.
Ví dụ cơ bản
string myStr = "5";
int a;
bool res = int.TryParse(myStr, out a); // res = true, a = 5
Mã nguồn hoàn chỉnh
using System.IO;
using System;
class Program
{
static void Main()
{
bool res;
int a;
string myStr = "5";
// Kiểm tra chuỗi biểu diễn số
res = int.TryParse(myStr, out a);
Console.WriteLine(res); // True
}
}
Kết quả
True
TryParse vs Parse
| Đặc điểm | int.Parse | int.TryParse |
|---|---|---|
| Trả về | int | bool |
| Kết quả | Qua return | Qua out parameter |
| Lỗi format | Ném FormatException | Trả về false |
| Lỗi overflow | Ném OverflowException | Trả về false |
| Null input | Ném ArgumentNullException | Trả về false |
| Hiệu suất khi lỗi | Chậm (exception cost) | Nhanh |
Các overload TryParse
// Cơ bản
bool TryParse(string s, out int result);
// Với NumberStyles (cho phép dấu phẩy, currency, hex...)
bool TryParse(string s, NumberStyles style, IFormatProvider provider, out int result);
// Ví dụ: Parse hex
int.TryParse("FF", NumberStyles.HexNumber, null, out int hexVal); // 255
// Ví dụ: Cho phép dấu phẩy nghìn
int.TryParse("1,234", NumberStyles.AllowThousands, CultureInfo.InvariantCulture, out int val);
Pattern matching (C# 7+)
if (int.TryParse(input, out int value))
{
Console.WriteLine($"Valid: {value}");
}
else
{
Console.WriteLine("Invalid number");
}
// Hoặc switch expression
string result = int.TryParse(input, out int v) ? $"Number: {v}" : "Not a number";
Khuyến nghị
- Luôn dùng
TryParsecho input người dùng, file, network, config. - Dùng
Parsechỉ khi dữ liệu đã được validate/sanitize. - Xem xét
long.TryParse,double.TryParse,decimal.TryParsecho kiểu khác.