Xét đoạn mã sau:Có cách nào để cảnh báo hiển thị trình biên dịch C# khi một câu lệnh chuyển đổi có các trường hợp không được giải quyết không?
private enum myEnum
{
A,
B
}
private void myMethod(myEnum m)
{
switch (m)
{
case myEnum.A:
//do stuff
break;
case myEnum.B:
//do stuff
break;
default:
throw new NotImplementedException(m.ToString());
}
}
Nếu tôi bao giờ thêm một thành viên C thứ ba để MyEnum, tôi sẽ chỉ được cảnh báo trong thời gian chạy bởi một NotImplementedException
Những gì tôi muốn làm là có trình biên dịch cảnh báo tôi khi có chuyển đổi với các trường hợp chưa được xử lý và không có mặc định: trường hợp.
Có cách nào để làm điều đó, hoặc giải pháp khác cho vấn đề này, mục tiêu cuối cùng đang được cảnh báo lúc biên dịch-thời gian mà một cái gì đó là mất tích?
Đó là một điểm tốt. Nhưng trong tình huống của tôi, tôi không nghĩ rằng nó áp dụng (nó sẽ dẫn đến hầu hết các lớp học trống rỗng, có chứa một số logic đó không phải là trách nhiệm của họ.Thông thường, tôi có một số DataContracts chứa thành viên được liệt kê, và GUI của tôi chuyển sang các thành viên đó để xem cách định dạng chúng.) – Brann
Một mẫu tốt, nhưng hãy sử dụng nó cẩn thận. Nếu enum của bạn là lớn và chuyển đổi của bạn chỉ cần xử lý một vài trường hợp bạn có thể không muốn tạo ra một lớp học tỷ. –
+1 để chỉnh sửa. =) –