Vì vậy, tôi sẽ có một đâm vào điều này mặc dù tôi sẽ không bao giờ biết lý do "thực sự" như tôi đã không ở trong nhóm biên dịch - và khả năng một trong số đó là vấn đề.
Tạo dấu phẩy thường hữu ích trong một vài trường hợp, cụ thể là hợp nhất và tạo mã. Trong bối cảnh của các công cụ như bộ sưu tập hoặc khởi tạo thuộc tính và enums, để lại dấu phẩy sau là vô hại (trình biên dịch có thể suy ra một cách an toàn "kết thúc danh sách" vì cũng có một khung chặn đóng nó có thể móc vào.
khá rõ ràng - trình biên dịch cần nhiều quyền kiểm soát trong lĩnh vực này để nó có thể cung cấp phản hồi tốt khi mọi người đang mã hóa và cho các tính năng phụ trợ khác. bắt đầu gây nhầm lẫn về cách xử lý mã "không đầy đủ" (người dùng có để nó ở đó một cách có chủ ý hoặc họ sắp gõ vào đối số tiếp theo không?).
Bạn đúng là params
rơi vào khái niệm khoảng trống trong đó bạn thấy chúng như là một mảng, và bạn có thể chỉ định chúng như là dấu phẩy phân cách (được hỗ trợ trước khi bộ sưu tập initialisers). Vì vậy, tại sao họ khởi hành theo phong cách từ bộ sưu tập initialisers?
Thông số ngôn ngữ cho bit params
không chỉ định rõ ràng hỗ trợ dấu phẩy, mặc dù nó cho bộ khởi tạo bộ sưu tập tương đương với các ngôn ngữ khác (C++ tôi nghĩ), làm tăng sự quen thuộc với các nhà phát triển di chuyển sang C# từ nơi khác.
Giả sử của tôi: thực tế là nó không được mô tả sau đó gây ra YAGNI để áp dụng và từ thời điểm đó chuyển tiếp đề xuất giá trị cho đối tượng địa lý là không có trí tuệ có lợi cho việc không triển khai nó.
Nguồn
2014-11-11 12:57:26
Trong ví dụ thứ hai, trình biên dịch sử dụng dấu phẩy để đối số phương pháp riêng biệt, không thu thập các mặt hàng. 'params' được xử lý riêng. Trên các đối số phương thức bạn chưa bao giờ có thể để lại dấu phẩy. –
Trình biên dịch không phải là một con người, nó không biết và không quan tâm rằng bạn muốn chuyển một bộ sưu tập đến phương thức. Nó chỉ "nhìn thấy" rằng cú pháp không hợp lệ. Cú pháp cũ là hợp lệ vì nó được cho phép trong đặc tả ngôn ngữ để khởi tạo các bộ sưu tập. –
Câu hỏi này đã bị đóng không chính xác là trùng lặp. [Câu hỏi được liên kết] (http: // stackoverflow.com/questions/3675173/why-can-you-have-a-dấu phẩy-at-the-end-of-a-bộ sưu tập-initializer) trả lời "tại sao chúng ta cho phép dấu phẩy trên bộ sưu tập initialisers", trong khi điều này là yêu cầu " tại sao chúng ta không được phép dấu phẩy cho các tham số phương thức 'params'. Điều đó nói rằng, câu trả lời sẽ là tương tự - nhưng câu hỏi là không. –