0

私は現在、クラスとコンストラクターを使用しています。コンストラクター内にcurrent等しいという名前のsint変数があります。0ボタンをクリックすると、プロパティをインクリメントしてからcurrentGetNextTreeを呼び出して表示しようとしています。しかし、current++ボタンのクリックからインクリメントすると、次のエラーが発生しますdoes not exist in current contextcurrentそれでは、インクリメントする適切な方法は何でしょうか?

public class fruit_trees
    {

    } 
public class ListForTrees
        {
    public int current;

    public fruit_trees GetNextTree()
            {
                current = 0;
                fruit_trees ft = first_tree;
                int i = 0;
                while (i != current)
                {
                    ft = ft.next_tree;
                    i++;

                }

                return ft;

            }


    }

private void ShowNextItem_Click(object sender, EventArgs e)
        {
            //Show Last Item

            fruit_trees obj = mainlist.GetNextTree();


            if (obj == null)
            {
                labelSpecificTree.Text = "No more trees!";
            }
            else
            {
               //error: current does not exist?
        current++
                labelSpecificTree.Text = obj.next_tree.GetTreeType.ToString();

            }   

        }
4

2 に答える 2

1

問題は、を呼び出そうとするスコープ(カプセル化)にありますint current

投稿されたコードから、int currentで定義されclass ListForTreesます。ただし、ListForTreesタイプのオブジェクトを初期化せずにアクセスしようとしています。

さらに、mainlist投稿されたコードでも定義されていないものを使用しています。コードで使用するアイテムの完全なコードカバレッジを投稿してください。

于 2012-12-14T04:18:31.473 に答える
0

変数currentはクラス内にカプセル化されますListForTrees。この変数はインスタンス変数であるため、構文ListForTreesを使用してこの変数にアクセスするには、の新しいインスタンスを作成する必要があります。instance.variable

さらに、あなたのクラスのデザインにはかなり欠陥があると思います。クラスを次のように再設計する必要があると思います。

public class FruitTree
{
    public static int Current { get; set; }
    public FruitTree GetNextTree()
    {
        //your code here
    }
}

そして、コード内のツリーのリストを初期化できます

于 2012-12-14T04:18:33.220 に答える