-5

さて、私は「Var1」と呼ばれるintを持っています:

public const int Var1 = 0;

今、私はこれを次のようにInt32値に割り当てたいと思います:

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

次に、このエラーが発生します。

割り当ての左側は、変数、プロパティ、またはインデクサーである必要があります

ヘルプ?私はこれに不慣れです、これが単純な間違いであるならば申し訳ありません。

4

5 に答える 5

3

constキーワードは、フィールドが定数であるため、宣言時に1回だけ割り当てることができることを意味します。

値を割り当てた0ため、後で新しい値で上書きすることはできません。

問題を修正するために修飾子を削除してください。

于 2012-09-09T08:13:20.847 に答える
2

そこで何をしているのか考えてみてください。

public const int Var1 = 0;

constCONSTANTを意味します。それはあなたがそれを変えることができないことを意味します。

于 2012-09-09T08:14:02.173 に答える
1

Aconst定数です; 実行時にその値を変更することはできません(そして、iNitialミョウバンはコンパイラで評価される定数式でなければなりません)。

を削除するだけで、constうまくいくはずです。

public int Var1 = 0;
// ...
Var1 = Convert.ToInt32(Console.ReadLine());
于 2012-09-09T08:14:22.080 に答える
0

あなたはconstVar1として宣言しています(これはそれ自体がかなりの撞着語です)。

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;
    }
}
于 2012-09-09T08:14:32.020 に答える
0

そうですね、Var1はconstフィールドとして宣言されています。つまり、その値を変更することはできません。Var1の値を変更する場合は、「const」修飾子を削除する必要があります。

于 2012-09-09T08:17:15.137 に答える