为什么我不能为const int字段赋值?

时间:2012-09-09 08:11:38

标签: c# int const variable-assignment build-error

好的,所以我有一个名为“Var1”的int:

public const int Var1 = 0;

现在我想将它分配给Int32值,如下所示:

Var1 = Convert.ToInt32(Console.ReadLine());

然后它会给我这个错误:

  

作业的左侧必须是变量,属性或索引器

帮助?我是新手,对不起,如果这是一个简单的错误。

5 个答案:

答案 0 :(得分:3)

const关键字表示该字段是常量,因此只能在声明时分配一次

您已分配值0,因此您无法在以后使用新值覆盖它。

删除修改器以解决您的问题。

答案 1 :(得分:2)

想想你在那里做了什么:

public const int Var1 = 0;

const表示 CONSTANT 。这意味着您无法更改它。

答案 2 :(得分:1)

const常量;您无法在运行时更改其值(并且iNitial明矾必须是在编译器中评估的常量表达式。)

只需删除const即可。

public int Var1 = 0;
// ...
Var1 = Convert.ToInt32(Console.ReadLine());

答案 3 :(得分:0)

你宣称Var1const(这本身就是一个矛盾的说法)。

const成员无法修改,因此无法分配。如果您希望Var1可变,请删除const修饰符:

public int Var1 = 0;

请注意,您无需将成员显式初始化为0,因为它是int类型的默认值。你只需写:

public int Var1;

我还建议成员private并通过public属性将其暴露给外界,这被认为是更好的封装实践:

private int _var1;

public int Var1
{
    get {
        return _var1;
    }
    set {
        _var1 = value;
    }
}

答案 4 :(得分:0)

嗯,Var1被声明为const字段,这意味着你无法改变它的值。如果要更改Var1的值,则必须删除“const”限定符。