-2

重複の可能性:
C# は初めてですが、Property Set が StackOverflow 例外をスローするのはなぜですか?

静的プロパティを設定しようとすると、スタック オーバーフロー例外が発生します。

public static class StaticTest
{
   static string stringToSet
   {
      get
      {                
          return stringToSet;
      }
      set
      {
          stringToSet = value;
      }
   }
}

次に、他のクラスで:

public void setStaticProperty()
{
    StaticTest.stringToSet = "Hello World";    // StackOverflow exception here
}

私が間違っていることは何ですか?

4

2 に答える 2

9
  set
  {
      stringToSet = value;
  }

それ自体を呼び出すため、セッター(およびそのことについてはゲッター)で無限再帰が発生するため、StackOverflow.

基になるフィールドを直接変更する必要がない場合は、代わりに自動プロパティを使用してください。

static string stringToSet {get; set;}
于 2012-11-19T13:35:55.673 に答える
4

静的プロパティセッターではstringToSet、静的プロパティセッターを呼び出す静的プロパティに値を割り当てています。静的プロパティセッターに値を割り当てており、stringToSet静的プロパティセッターを呼び出しています。 property stringToSet、静的プロパティ セッターを呼び出します。ここで、静的プロパティに値を割り当てますstringToSet...

プロパティ値を格納するには、プライベート フィールドを追加する必要があります。通常は、プロパティの名前を大文字 ( StringToSet) で始まるように変更します。

private string stringToSet;

public string StringToSet {
    get {
        return stringToSet;
    }
    set {
        stringToSet = value;
    }
}
于 2012-11-19T13:36:35.480 に答える