Tôi đang làm việc trong C# và tôi bắt đầu chơi với các thuộc tính. Một điều tôi không biết là cách tốt nhất/nơi để đặt logic cho các bộ truy cập thiết lập các thuộc tính lớp và cách xử lý các lỗi.C# Properties - Đặt câu hỏi
Ví dụ, nói rằng tôi có điều này (cơ bản) lớp:
class Person
{
private int _Age = 18;
public Person()
{
}
public int Age
{
get
{
return _Age;
}
set
{
_Age = value;
}
}
}
Bây giờ nói rằng tôi có một yêu cầu về quyền sở hữu Age, 0 < Tuổi < 100. Tôi nên đặt logic cho việc này?
Tôi có nên đặt nó trong tài sản không?
public int Age
{
get
{
return _Age;
}
set
{
if (value < 0 || value > 99)
// handle error
else
_Age = Convert.ToInt32(value);
}
}
hoặc thông qua lớp học đang tạo đối tượng Person?
static void Main(string[] args)
{
Person him = new Person();
int NewAge = -10;
if (NewAge < 0 || NewAge > 100)
// handle error
else
him.Age = NewAge;
}
Bây giờ nếu có vấn đề gì với NewAge (nó không đáp ứng được ràng buộc của tôi)? Tôi có nên tạo một ngoại lệ tùy chỉnh và ném nó không? Tôi có nên in một thông báo cho biết nguồn cung cấp có hợp lệ không?
Tôi đã thực hiện một số Googling và tôi không thể tìm thấy bất kỳ điều gì có câu trả lời đầy đủ cho câu hỏi của tôi. Tôi cần một cuốn sách: -/
Cũng lưu ý rằng setter của bạn không cần 'Convert.ToInt32 (giá trị) '... vì thuộc tính là 'int',' giá trị' cũng sẽ là 'int'. – jerryjvl
Đây có phải là chương trình phòng thủ không? Hay tôi đang dùng nó cho đến nay? –
Bạn đang dùng nó quá xa. Không có khả năng rằng điều bạn nhận được không phải là một int. –