Vì vậy, tôi có một lớp với một tham số chuỗi duy nhất trong constructor của nó là gì:cách chính xác để xác nhận các đối số của một constructor
public MyClass(string name)
{
this.Name = name;
}
nhưng tôi không bao giờ muốn phải lo lắng về một số một khởi tạo một thể hiện của MyClass với tên là NULL hoặc chuỗi có độ dài bằng không. Cách tốt nhất để xác thực tham số là gì? Với một thuộc tính hoặc phương thức bạn luôn có thể không làm gì cả, trả về null hoặc không đặt bất cứ điều gì nếu một đối số không hợp lệ được cung cấp. Nhưng một khi một constructor được gọi là instance của đối tượng đã được tạo ra bất kể nó đã được thông qua các đối số hợp lệ chưa.
Có phải ném một ngoại lệ như được hiển thị bên dưới theo cách tốt nhất không? Hay có phương pháp nào khác được ưa thích hơn?
public MyClass(string name)
{
if (name == null | name == "") throw new ArgumentException("Name can not be null or blank", "name");
this.Name = name;
}
Tất nhiên tôi luôn luôn có thể thiết lập tên cho một số mặc định như "MyClass Không được đặt tên" nếu đối số là không hợp lệ, nhưng trong trường hợp này tôi chỉ muốn ngăn chặn một tên không hợp lệ sau đó cố gắng để giả định một số hành vi thay thế.
Hãy rất cẩn thận khi ném ngoại lệ trong nhà xây dựng Bạn có thể kết thúc với nguồn lực bị rò rỉ nếu yo bạn đã bắt đầu lấy tài nguyên/phân bổ bộ nhớ, v.v. – Matt
Dù bằng cách nào, nó sẽ không được || (Logic OR) và không | (Bitwise OR)? Chỉ cần tự hỏi. –
@Blaenk, vâng, tôi đã sử dụng sao chép và dán. Ngạc nhiên khi sử dụng của tôi không bị ảnh hưởng bởi lỗi của OP. :) –