2009-09-15 5 views
1

근본적인 질문 : 어떻게 다른 메서드 내에서 정적 메서드를 호출 할 수 있습니다. 도와주세요!!다른 메서드 내에서 정적 메서드를 호출 할 수 있습니까?

public static class Class1 
{ 
    public static string RenderCompareStatus() 
    { 
     bool isFound = Class1.Found(id); 
    } 

    private static bool Found(string id) 
    { 

    } 

// 오류 메시지 :

+0

본문의 첫 번째 문장은 다소 설명하기 쉽지만 제목/제목은 이해하기 어렵습니다. 수정을 고려하십시오. – Smandoli

+0

그래, 여기가 최소한의 코드 다. 나는 코드에서 제안 된 편집을했다. 그러나 여전히 효과가 없습니다. –

+0

발견은 부울 값을 반환 할 때까지 컴파일되지 않으므로 호출은 부울 값을 정렬 할 때까지 작동하지 않습니다. –

답변

4

내가 완전히 동작하는 예제로 샘플을 확장

Test: False 

편집 : 위의 예제 코드와 비슷하지만 코드가 작동하지 않는 경우, edit your question으로 보내 주시면 정확한 오류 및 오류를 생성하는 코드의 전체 샘플과 같은 자세한 정보를 제공합니다.

편집 : public static bool Found(string id)에서 private static bool Found(string id)으로 변경되었으며 여전히 작동합니다.

+0

감사합니다. 그럼 당신을 위해 일하는 것입니다. 그게 내가 한 일이고 다음 문장에서 오류가 발생합니다. bool isFound = Found (id); (red sqiggly line found below here) –

+0

@sa : Visual Studio가 아닌'csc.exe '와 메모장을 사용하여 테스트했지만, 컴파일 오류가 발생해서는 안된다. 'Found()'위로 마우스를 가져 가면 팝업창에 무엇이 표시됩니까? –

+0

그래, 그렇게하려고 노력해야 해. 하지만 1 질문 : C에서 정적 클래스에있는 다른 정적 메서드에서 정적 메서드를 호출 할 수 있습니다 !! –

3

당신은 예를 들어, 클래스 이름을 사용하여 찾을 수에 대한 정의가 포함되어 있지 않습니다 Class1.Found

+6

@ Tzury : 클래스 이름을 사용할 필요가 없습니다. –

2

코드 괜찮아 보이는 - 즉 실제 코드이고,뿐만 아니라 최소한의 예를 들어, 당신은 Found에 인수로 전달하는 RenderCompareStatus의 범위 내에서 id (또는 다른 변수)를 지정해야합니다.

using System; 

public static class Class1 
{ 
    public static void Main() 
    { 
     Console.WriteLine(RenderCompareStatus()); 
    } 

    public static string RenderCompareStatus() 
    { 
     String id = "test"; 
     bool isFound = Found(id); 
     return "Test: " + isFound; 
    } 

    private static bool Found(string id) 
    { 
     return false; 
    } 
} 

결과 :

0

두 가지 방법 모두 return 문이 없습니다. void가 아닌 메소드에 대해 리턴 값을 지정하지 않으면 컴파일 오류가 발생합니다.

Class1.Found (id)를 사용하여 정적 메서드를 호출하는 것이 좋습니다. 하지만 같은 클래스에서 호출하면 "Class1"을 생략 할 수 있습니다. 전화하기 전에.

관련 문제