gì tôi có là đơn giản câu lệnh switchBiến vấn đề khởi tạo trong câu lệnh switch
Control myControl;
switch(x)
{
case TabType.Edit:
{
myControl= ...;
}
case TabType.View:
{
myControl= ...;
}
}
myPageView.Controls.Add(myControl);
Trong biên dịch tình huống này nói với tôi rằng
địa phương biến myControl có thể không được khởi tạo trước khi truy cập
Vì vậy, cách tốt nhất để tránh tình trạng này là gì?
Một tùy chọn là khởi tạo myControl trước câu lệnh chuyển đổi. Nhưng trong trường hợp này tôi làm thêm một lần nữa.
TRƯỜNG HỢP 1:
Control myControl = null;
switch(x)
{
case TabType.Edit:
{
myControl= ...;
}
case TabType.View:
{
myControl= ...;
}
}
myPageView.Controls.Add(myControl);
tùy chọn kế tiếp là thay đổi trường hợp thứ hai với default
. Sau đó trình biên dịch sẽ "hiểu" rằng myControl sẽ được anyway khởi tạo và sẽ không ném ngoại lệ.
TRƯỜNG HỢP 2:
Control myControl;
switch(x)
{
case TabType.Edit:
{
myControl= ...;
}
default:
{
myControl= ...;
}
}
myPageView.Controls.Add(myControl);
Nhưng trường hợp này không giống như vậy tốt, bởi vì sau khi thêm một số đặc tính mới để enum của tôi nó sẽ làm mặc định cho tất cả các loại khác (nhà phát triển có thể dễ dàng quên thay đổi mã ở đây hoặc nó có thể không cần thiết để khởi tạo myControl cho các loại enum khác).
Cách tiếp cận tốt nhất trong những trường hợp như thế nào?
Trình biên dịch cung cấp cho bạn câu trả lời .. chỉ cần đặt thành null cục bộ lỗi của bạn "myControl biến có thể không được khởi tạo trước khi truy cập" – MethodMan