gpt4 book ai didi

c# - 为什么要编译?

转载 作者:IT王子 更新时间:2023-10-29 04:14:36 25 4
gpt4 key购买 nike

我为之前在我的代码中多次明确声明的值创建了一个“const”:

private static readonly int QUARTER_HOUR_COUNT = 96;

当我为 QUARTER_HOUR_COUNT 搜索并替换 96 ​​时,我无意中也替换了声明,所以它变成了:

private static readonly int QUARTER_HOUR_COUNT = QUARTER_HOUR_COUNT;

...但是它编译了。我认为它会不允许这样做。为什么它被编译器接受为有效声明?

最佳答案

I would think that it would disallow that. Why was it accepted by the compiler as a valid declaration?

大概是因为语言规范允许这样做。您认为语言规范中是否有特定规则禁止它?

如果你的问题真的是“为什么语言规范不禁止这个”——我怀疑这是因为可能很难确保你禁止你真正想禁止的东西,而实际上禁止所有此类事情。

你可能会争辩说,对于简单直接赋值给自身的情况,在语言规范中有一个特殊情况会很好,但它会给的语言带来复杂性相对好处不大。

请注意,即使您没有收到错误,我也希望您收到警告 - 如下所示:

Test.cs(3,33): warning CS1717: Assignment made to same variable; did you mean to assign something else?

另请注意,如果您将其设为 const 而不是静态只读变量,那么您确实会遇到编译时错误:

Test.cs(3,23): error CS0110: The evaluation of the constant value for 'Program.QUARTER_HOUR_COUNT' involves a circular definition

另请注意,根据 .NET 命名约定,这应该称为 QuarterHourCount,而不是 SHOUTY_NAME。

关于c# - 为什么要编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11973142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com