Không có lý do cụ thể tại sao trật tự đó đã được lựa chọn. Thứ tự được chọn đi từ tổng quát hơn đến cụ thể hơn, mà tôi cho là một tài sản hợp lý tốt đẹp.
Đối với câu hỏi "tại sao yêu cầu đơn hàng?", Việc thực hiện và thử nghiệm các nhóm thực hiện đơn giản, rõ ràng hơn được áp đặt bởi ngôn ngữ sẽ dễ dàng hơn. Chúng tôi có thể cho phép các ràng buộc đi kèm theo bất kỳ thứ tự nào, nhưng điều gì sẽ khiến chúng tôi mua?
Tôi càng làm việc trên các ngôn ngữ càng có nhiều ý kiến rằng mỗi lần bạn cung cấp cho người dùng một lựa chọn, bạn sẽ cho họ cơ hội tạo ra lựa chọn không tốt. Nguyên tắc thiết kế cơ bản của C# là chúng tôi cho bạn biết khi mọi thứ có vẻ sai và buộc bạn phải làm cho chúng đúng - đó không phải là nguyên tắc thiết kế cơ bản của JavaScript. Nguyên tắc thiết kế cơ bản của nó là "lộn xộn và cố gắng làm những gì người dùng muốn nói". Bằng cách đặt nhiều hạn chế hơn về cú pháp chính xác trong C#, chúng tôi có thể đảm bảo tốt hơn rằng ngữ nghĩa dự định được thể hiện tốt trong chương trình.
Ví dụ, nếu tôi được thiết kế một C# -like ngôn ngữ ngày nay không có cách nào đó tôi sẽ có cú pháp mơ hồ như:
class C : X , Y
hoặc
... where T : X, Y
Y rõ ràng là dự định được một giao diện. Là X? Chúng tôi không thể nói cú pháp cho dù X được dự định là một giao diện hay một lớp học. Đủ để nói sự mơ hồ này rất phức tạp những thứ như phát hiện chu kỳ trong các loại cơ sở vs giao diện và như vậy. Nó sẽ dễ dàng hơn nhiều nếu tất cả lo lắng nếu nó có nhiều chi tiết hơn, như trong VB.
Nguồn
2011-12-15 15:54:03
Là nền, đặc tả ngôn ngữ cho biết ràng buộc phải nằm trong thứ tự * ràng buộc chính, ràng buộc phụ, ràng buộc constructor *, trong đó * ràng buộc chính * đơn giản là * class * hoặc * struct *, ràng buộc thứ hai * * là một giao diện hoặc loại lớp nhất định và ràng buộc * constructor * chỉ đơn giản là * new() *. Đối với lý do tại sao họ được phân loại như vậy và yêu cầu thứ tự đó, tôi không có ý tưởng. Có lẽ đặc tả ngôn ngữ được chú thích sẽ làm sáng tỏ điều đó? –
Thú vị, cảm ơn. Đó là lý do tại sao tôi đặc biệt quan tâm. –