2013-03-01 3 views
1

Visual C# 2008 express. Windows 양식; 두 개의 텍스트 상자와 버튼 하나. cmdEnter_Click 이벤트에서 ValidateForm 클래스의 부울 변수가 true인지 아닌지 (텍스트 상자가 지워지는지 여부를 처리하기 위해)를 확인하려고합니다. 다른 클래스의 변수에 액세스 할 수 없습니다. 'public'표현이 잘못되었습니다.

private void cmdEnter_Click(object sender, EventArgs e) 
{ 
    ValidateForm(); 
    txtName.Clear(); 
    txtAge.Clear(); 
} 

public void ValidateForm() 
{ 
    bool bValidName = ValidateName(); 
    bool bValidAge = ValidateAge(); 
    if (bValidName && bValidAge) 
      MessageBox.Show("Entry will be added");    
    else 
      MessageBox.Show("Please enter valid data"); 
} 

나는 대중에게 개인에서 ValidateFrom() 수정을 변경하고 내가 그들을 acccess 수도 있지만이 "잘못된 표현 용어 공개"오류를받을 수 있도록 다음, 부울 변수 앞에 공개했습니다. 내 이해는 변수가 공개이고 공용 클래스 안에 있으면 어디서나 액세스 할 수 있어야한다는 것입니다.

+2

해당 코드는 지정된 오류 메시지를 표시하지 않습니다. 주변 코드를 조금 더 게시 할 수 있습니까? –

답변

3

메소드 내부의 변수 선언은 클래스가 public인지 여부에 관계없이 해당 메소드 내에서만 사용할 수 있습니다.

공용 클래스 외부에서 변수에 액세스하려면 클래스 수준 변수를 사용하십시오. 귀하의 방법 외에서 선언하십시오. 공용/개인 수식어는 메서드 내에서 유효하지 않으므로 클래스 수준에서 사용해야합니다.

public bool bValidName; 

public void ValidateForm() 
{ 
    bValidName = ValidateName(); 
    ... 

원하는 작업에 따라 속성을 대신 만들 수도 있고 get/set에 수정자를 사용할 수 있습니다.

public bool bValidName { get; set; } 
+0

감사합니다. click 이벤트 내에서 변수가 true이면 적절한 텍스트 상자의 텍스트를 지울 수 있기를 원합니다. – KFP

+2

그들이 속성을 만들려면 이름 지정 규칙을 따르고'ValidName' – CAbbott

+0

@KFP를 사용하는 것이 좋습니다. 왜 클래스 외부의 변수에 액세스해야하는지 모르겠지만 코드는 여전히 작동합니다. 당신이 그것을 쓴 방법. 유일한 차이점은 범위와 액세스를 변경한다는 것입니다. CAbbot이 말했듯이, 공공 재산의 명명 규칙은 낙타 껍데기를 사용하지 않습니다. – Brandon

관련 문제