Validate bằng mã ascii c#

mình có đoạn code như này

public int Id
        {
            get
            { return _Id; }
            set
            {
                while (value == 0 || value  . . . . . )
                {
                    Console.WriteLine("pre enter:");
                    value = Convert.ToInt32(Console.ReadLine());
                }
                _Id = value;
            }
        }

mình muốn cái id kia chỉ đc nhập số trừ số 0 và trừ tất cả kí tự khác. mình định sd mã ascii nhưng k biết làm ntn.
chỗ 3 chấm phải điền sao ạ.

Cách đầu tiên mình nghĩ đến

public int Id
{
	get
	{
		return _Id;
	}
	set
	{
		while (value <= 0)
		{
			Console.WriteLine("pre enter:");
			try
		 	{
			 	value = Convert.ToInt32(Console.ReadLine());
		 	}
			 catch
		 	{
			 	value = 0;
		 	}
		}
		_Id = value;
	}
}

cái này khi nhập chữ cái vào vẫn exception như bt à

Convert.ToInt32() nó không lọc hộ đâu, có ký tự không phù hợp là quăng exception đấy.
Code lọc ký tự trong Console hãm lắm, chi bằng cứ bắt exception cho nhanh.

1 Like

Không nên viết cái hàm get vào trong property thế kia.
Viết riêng nó ra bên ngoài.

int ReadInt(){
    int val=0;
    do{
        Console.WriteLine("pre enter:");
        string input = Console.ReadLine();
        if(int.TryParse(input, out val)) continue;
    while(val<=0);
    return val;
}

Thế rồi đọc

int inputINT = ReadInt();
obj.Id = inputINT>0?inputINT:obj.Id;
3 Likes

ths ạ

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?