전역 변수가있는 Windows Forms 응용 프로그램 - testPath
이라는 문자열이 있습니다.C# - 이벤트 처리기에서 전역 변수에 액세스 할 수 없습니다.
이 문자열은 경로를 저장하는 데 사용됩니다. 기본값은 C:\temp\
입니다. 사용자가 버튼을 클릭하면이 디렉토리가 만들어집니다 (아직없는 경우).
사용자가 경로 값을 변경하려는 경우를 대비하여 텍스트 상자 컨트롤도 있습니다.
단추의 이벤트 처리기에서 testPath
에 액세스하려고 시도하고 null 참조가 나타납니다.
어디서나 testPath
의 값을 변경하지 않습니다. 텍스트 상자 컨트롤과주고받을 때를 제외하고는 어디에도 없습니다.
내가 뭘 잘못하고 있니? 전역 변수는 1 초 안에 내부 변수에 어떤 영향을 주며 그 후에 바로 null 참조를 가리 킵니까?
public string testPath = @"C:\temp\";
public MainForm()
{
//Windows Designer call
InitializeComponent();
//Show the testPath in the textBox (using Invokes)
this.textBox1.Invoke(new MethodInvoker(delegate { this.textBox1.Text = testPath; }));
//here, testPath contains 'C:\temp\'
}
//Button "Click" handler
private void Button1Click(object sender, EventArgs e)
{
//here, testPath contains a null reference!
//If the user changed testPath in the textBox, we need to save it again
this.textBox1.Invoke(new MethodInvoker(delegate { testPath = this.textBox1.Text; }));
//Create the path
if(!Directory.Exists(testPath)) //If it does not exist already
{
Directory.CreateDirectory(testPath);
}
//...Do something else
}
C#에는 전역 변수가 없습니다. 멤버 변수일까요? – GregC
이 코드가 모두 하나의 파일에 있고 같은 네임 스페이스 안에 있다고 가정합니다. 이 경우 파일에 testPath가 null로 설정되는 코드가 있어야합니다. .. –
전체 수업을 보여줄 수 있습니까? 너무 길면 여기에서 언급되지 않은 멤버는 생략하면서 "완전한"클래스일까요? –