1

System.StackOverflowException助けてください。なぜエラー ログが処理されなかったのかわかりません 。

セット LekID でエラーが発生し続けます。どうすれば修正できますか?

コードは次のとおりです。

public Lager(long lekID, string lek, string proizvojdac, int kolicina, double cena)
{
    LekID = lekID;
    Lek = lek;
    Proizvodjac = proizvojdac;
    Kolicina = kolicina;
    Cena = cena;

}

public long LekID   
{
    get { return LekID; }
    set { LekID = value; }
}
public string Lek
{
    get { return Lek; }
    set { Lek = value; }
}
public string Proizvodjac
{
    get { return Proizvodjac; }
    set { Proizvodjac = value; }
}
public int Kolicina
{
    get { return Kolicina; }
    set { Kolicina = value; }
}
public double Cena
{
    get { return Cena; }
    set { Cena = value; }
}
4

6 に答える 6

8
public long LekID   
{
    get { return LekID; }
    set { LekID = value; }
}

value何度も何度も割り当てているため、これ (および他のプロパティ) によって StackOverflowException が発生しますLekID

プロパティにフィールドを追加し、そこに値を保存する必要があります。

private long _lekID;
public long LekID   
{
    get { return _lekID; }
    set { _lekID = value; }
}
于 2013-03-05T10:22:22.517 に答える
8

プライベート変数とプロパティには別の名前を付ける必要があります。それ以外の場合、プロパティはアクセス時に自分自身を呼び出しています。

例:

long _lekID;
public long LekID
{
    get { return _lekID; }
    set { _lekID = value; }
}

または単に:

public long LekID { get; set; }
于 2013-03-05T10:21:19.730 に答える
3

プロパティは自分自身を呼び出しています。次のようにプロパティを変更してみてください。

public string Lek
{
    get;
    set;
}
于 2013-03-05T10:21:04.267 に答える
2

セッターとゲッターの両方で Lek プロパティを再帰的に呼び出しています

バッキングフィールドを導入するか:

private string lek;

public string Lek
{
    get { return this.lek; }
    set { this.lek = value; }
}

または自動プロパティを使用します。

public string Lek
{
    get; set;
}
于 2013-03-05T10:20:49.733 に答える
0

prop/propfull のようなコード スニペットを使用してみてください。

スニペットはプロパティ コードを自動的に作成します。

于 2013-03-05T10:39:42.240 に答える
0

このコミュニティ wiki を余談としてマークするのは余談ですが、もしあなたが十分に怠け者だったら、こんなことにはならなかったでしょう (これはしばしばプログラミングの美徳であり、悪徳ではありません):

public long LekID {get;set;}
public string Lek {get;set;}
public string Proizvodjac {get;set;}
public int Kolicina {get;set;}
public double Cena {get;set;}

タイピングが少ない; エラーなし。また、API をプロパティとして正しく公開しているため、必要に応じて後で検証/副作用を追加できます。バインディング API (通常はフィールドが好きではありません) で動作します。

于 2013-03-05T10:30:33.660 に答える