2012-12-14 2 views
0

현재 클래스 및 생성자로 작업 중입니다. 나는 생성자 안에 0과 같은 current이라는 이름의 sint 변수를 가진다. 이제 버튼을 클릭하면 속성 current을 증가시키고 표시 할 GetNextTree를 호출하려고합니다. 그러나 current++ 버튼을 클릭하면이 오류가 발생합니다 : does not exist in current context. 그렇다면 current을 증가시키는 올바른 방법은 무엇입니까?클래스 및 생성자 : 클래스 외부의 변수 증가시키기

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(); 

      } 

     } 

답변

1

문제는 int current을 호출하려는 범위 (캡슐화)에 있습니다.

게시 된 코드에서 int currentclass ListForTrees으로 정의됩니다. 그러나 ListForTrees 유형의 객체를 초기화하지 않고 액세스하려고합니다.

또한 게시 된 코드에도 정의되지 않은 mainlist을 사용하고 있습니다. 코드에서 사용하는 항목에 대해 전체 코드 적용 범위를 게시하십시오.

+0

을에 나무의 목록을 초기화 할 수 있습니다 : 당신이 같은 클래스를 재 설계해야하는지 생각 질문/13863114/show-position-of-a-list/13863661 # 13863661). 그것은 완전한 코드를 가지고 있습니다. 질문을 분기하는 방법을 모릅니다. – CodingWonders90

0

current 변수는 ListForTrees 클래스에 캡슐화되어 있습니다. 이 변수는 인스턴스 변수이므로 instance.variable 구문을 사용하여이 변수에 액세스하려면 ListForTrees의 새 인스턴스를 만들어야합니다.

또한 귀하의 수업 설계에 결함이 있다고 생각합니다.

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

을 그리고 당신이 questiosn이 [ONE] (http://stackoverflow.com/에 분기 코드