I would think that it would disallow that. Why was it accepted by the compiler as a valid declaration?
Có lẽ vì đặc tả ngôn ngữ cho phép. Bạn có quy tắc cụ thể trong đặc tả ngôn ngữ mà bạn cho là cấm không?
Nếu câu hỏi của bạn thực sự là "tại sao đặc tả ngôn ngữ lại không cho phép điều này" - tôi nghi ngờ là vì nó có thể khá khó khăn để đảm bảo bạn chỉ cấm những thứ bạn thực sự muốn cấm, trong khi thực sự cấm tất cả những thứ như vậy .
Bạn có thể tranh luận rằng cho trường hợp đơn giản của phân công trực tiếp trở lại chính nó, nó sẽ là tốt để có một trường hợp đặc biệt trong spec ngôn ngữ, nhưng nó sẽ giới thiệu phức tạp sang ngôn ngữ cho tương đối lợi ích nhỏ.
Lưu ý rằng ngay cả khi bạn không nhận được một lỗi , tôi mong đợi bạn để có được một cảnh báo - một cái gì đó như thế này:
Test.cs(3,33): warning CS1717: Assignment made to same variable; did you mean to assign something else?
Cũng lưu ý rằng nếu bạn thực hiện nó một const
thay vì chỉ là một biến readonly tĩnh, sau đó bạn làm nhận được một lỗi thời gian biên dịch:
Test.cs(3,23): error CS0110: The evaluation of the constant value for 'Program.QUARTER_HOUR_COUNT' involves a circular definition
Cũng lưu ý rằng bằng cách ước NET đặt tên, điều này phải được gọi là QuarterHourCount
, thay vì có SHOUTY_NAME.
Nguồn
2012-08-15 16:27:34
Bởi vì nó là tĩnh! – canon
Wow! Đó là hành vi đáng ngạc nhiên. – leppie
vì có vô số cách để làm sai. – Jodrell