2013-07-26 3 views
0

그래서 Class1은 Class2보다 먼저 호출됩니다. 클래스 1의 Sfile에 텍스트가 포함되어 있으며이를 확인했습니다. class2에서 사용하는 동안 그것은 null입니다. 나는 뭔가를 놓친다는 것을 알고, 단지 무엇을 기억할 수 없다. 감사!정적 변수 다른 클래스의 호출

public static Class1{ 
    public static StreamWriter Sfile; 

internal static void Function1(){ 
     StreamWriter Sfile = new StreamWriter(str1, true); 
     Sfile.Write(Text) 
     } 
    } 

public partial class Class2{ 

private void Function2(){ 
     StreamWriter PrintField=Class1.Sfile; 
     //Sfile is null;   
     } 
    } 
+0

언어를 나타내는 태그를 추가하십시오. – arshajii

+0

class1에'sfile'을 초기화하지 않았습니다. –

+0

내부 함수 'Sfile = new StreamWriter (str1, true);'에서 이것을 사용하십시오! 그렇지 않으면 지역 변수를 선언하고 있습니다! – NINCOMPOOP

답변

2

문제 Function1 정적 필드 숨겨 Sfile라는 로컬 변수 선언이다. 따라서 지역 변수에 정적이 아닌 null이 아닌 값을 지정했습니다.

이 같은

변경 Function1 :

internal static void Function1() 
{ 
    Sfile = new StreamWriter(str1, true); 
    Sfile.Write(Text); 
} 

... 그리고 지금 당신은 같은 문제받지 않습니다. 다른 이유로는 여전히 끔찍한 코드이지만 적어도 Sfile은 null이 아닙니다.

+0

을 참조하십시오. 다른 이유 때문에 여전히 끔찍한 코드입니다. 아마도 그 이유를 대답에 포함시킬 수 있습니까? 아마도'Class1'의 코드가 다른 위치에서 호출되고 이것이 실제로 목적과 같은 정적 인 것입니까? – aevitas

+0

@aevitas : 솔직히 말해서 목록에있는 이유가 너무 많습니다. 그들은 실제 질문을 왜소하게 만들 것이며, 지금 당장은 시간이 없습니다. –

관련 문제