Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Validate chuỗi số với int.TryParse trong C#

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ểmint.Parseint.TryParse
Trả vềintbool
Kết quảQua returnQua out parameter
Lỗi formatNém FormatExceptionTrả về false
Lỗi overflowNém OverflowExceptionTrả về false
Null inputNém ArgumentNullExceptionTrả về false
Hiệu suất khi lỗiChậ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 TryParse cho input người dùng, file, network, config.
  • Dùng Parse chỉ khi dữ liệu đã được validate/sanitize.
  • Xem xét long.TryParse, double.TryParse, decimal.TryParse cho kiểu khác.