0

やあみんな私はc#が初めてです。私はこの本を読んでいましたが、空欄を埋めると __ は値を変更できないデータ フィールドまたはローカル変数ですか? と書かれています。誰か答えを教えてくれませんか?ありがとう。ps: まったくの初心者 YouTube を検索しましたが、コードがめちゃくちゃでした。ありがとう。

4

2 に答える 2

3

完全な答えは 2 つあります。

1) プリミティブ型 ( intdoublestringなど) の場合、const修飾子を使用できます。これは実際、この型の変数の値を決して変更できないことを意味します。

2) 非プリミティブ型の場合、readonly修飾子が存在します。const非プリミティブ型には適用できないことに注意してください。これは、参照型と値型で同じことを意味します。この変数への 参照は、このオブジェクトの構築後に変更できません。ただし、結果は異なります。

2.1)readonlyオブジェクト自体は、パブリック API を使用して変更できます。例えば:

class Foo{
  private readonly List<int> list;
  public Foo(){ list = new List<int>();}

  public Test()
  {
    list = new List<int>(); // invalid; your reference is readonly
    list.add(5);//works, you are changing the object, but not touching it's reference
  }
}

2.2) 値型readonlyの場合、修飾子を使用する際は注意が必要readonlyです。変更可能な構造体で微妙なエラーが発生する可能性があります。C#を参照してください: readonly 構造体のミューテーションが壊れないのはなぜですか? 例えば。ただし、あなたstructが不変の場合、constキーワードのセマンティクスを効果的に取得します

于 2013-09-23T16:22:28.887 に答える
2

答えは定数です。ここにリンクがありますこれを読んでください

于 2013-09-23T16:14:39.477 に答える