C# in Depth what you need to master c2 and 3 phần 7

Trong C # 1 và 2, khởi tạo một mảng như là một phần của một khai báo biến và tuyên bố khởi là khá gọn gàng, nhưng nếu bạn muốn để làm điều đó bất cứ nơi nào khác, bạn phải xác định loại mảng chính xác liên quan đến. Vì vậy, ví dụ, biên dịch mà không có bất kỳ vấn đề: | Implicitly typed arrays 223 Implicitly typed arrays In C 1 and 2 initializing an array as part of a variable declaration and initialization statement was quite neat but if you wanted to do it anywhere else you had to specify the exact array type involved. So for example this compiles without any problem string names Holly Jon Tom Robin William This doesn t work for parameters though suppose we want to make a call to MyMethod declared as void MyMethod string names . This code won t work MyMethod Holly Jon Tom Robin William Instead you have to tell the compiler what type of array you want to initialize MyMethod new string Holly Jon Tom Robin William C 3 allows something in between MyMethod new Holly Jon Tom Robin William Clearly the compiler needs to work out what type of array to use. It starts by forming a set containing all the compile-time types of the expressions inside the braces. If there s exactly one type in that set that all the others can be implicitly converted to that s the type of the array. Otherwise or if all the values are typeless expressions such as constant null values or anonymous methods with no casts the code won t compile. Note that only the types of the expressions are considered as candidates for the overall array type. This means that occasionally you might have to explicitly cast a value to a less specific type. For instance this won t compile IMII new new MemoryStream new StringWriter There s no conversion from MemoryStream to StringWriter or vice versa. Both are implicitly convertible to object and IDisposable but the compiler only considers types that are in the original set produced by the expressions themselves. If we change one of the expressions in this situation so that its type is either object or IDisposable the code compiles new IDisposable new MemoryStream new StringWriter The type of this last expression is implicitly IDisposable . Of course at that point you might as well explicitly state the type of the array just as you

Không thể tạo bản xem trước, hãy bấm tải xuống
TỪ KHÓA LIÊN QUAN
TÀI LIỆU MỚI ĐĂNG
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.