私は.net3.5で作業しています。スタックとgetterプロパティを持つクラス"A"があり、呼び出されると、スタックの最初のアイテムを削除して次のアイテムを取得します。
クラスを初期化した後、ゲッターが呼び出されずに機能し、スタックの最上位のアイテムが削除されるため、悪い結果が得られることがわかりました。ゲッターのブレークポイントは、それを通過する人を示していませんでした。
プロパティを関数に変更すると、スタックは正常に返されます。
誰かがその理由を説明してくれたら嬉しいです。
簡略化されたクラスは次のとおりです。
public class A
{
private Stack<string> Urls;
public A(string title, string[] array)
{
Urls = new Stack<string>();
foreach (string s in array)
{
Urls.Push(s);
}
}
public string Url
{
get { return Urls.Peek(); }
}
public string NextUrl
{
get{
if (Urls.Count > 1)
{ Urls.Pop(); }
return Urls.Peek();
};
}
}