2012-09-11 3 views
-1

static[webmethod]에서 비 정적 메서드를 호출해야합니다. 그것은 전화를 받고 있지 않습니다, 나는 그것을 사용하여 breakpoints.i 테스트 클래스에 인스턴스를 만들어 호출하려고. 이것은 내가 시도하는 것입니다.정적 메서드에서 비 정적 메서드 호출 방법

[WebMethod] 
public static string get_runtime_values(string get_ajax_answer_title,string get_ajax_answer_des) 
{ 
    if (get_ajax_answer_title.Equals("") && (get_ajax_answer_title.Equals(""))) 
    { 
     return "null"; 
    } 
    else 
    { 
     int got_question_id = getting_question_id; 
     DataHandler.breg obj = new DataHandler.breg(); 
     obj.add_anwers(got_question_id, get_ajax_answer_title, get_ajax_answer_des); 
     return "inserted"; 
    } 

    querystring object_new = new querystring(); 
    object_new.show(); 
    } 

쿼리 문자열 클래스 나가요 컨트롤의 이름입니다 경우에려고하고 다른 문 입력에 따라,하지만 직접 내가 쿼리 문자열에 마우스를 가져 가면 out.Moreover 뛰어 얻을 그 후에는

을 말한다
Unreachable code detected. 

제대로 작동하려면 어떻게해야합니까?

+3

당신은'if'와'else' 섹션 ... 당신은 또한 다음 줄 – freefaller

+0

에 도달하지 않을거야 모두에서'return'을 가지고있는 경우 (get_ajax_answer_title.Equals ("")'대신 && (만약 당신이 그 질문을 게시하기 전에 이것을봤을 때마다 시간을 절약 할 수 있었을 것입니다 (get_ajax_answer_title.Equals ("")))'if (get_ajax_answer_title.Equals ("") && (get_ajax_answer_des.Equals ("")))' –

+0

이것은 도움이됩니다. http://stackoverflow.com/questions/1360183/call-non-static-method-from-static-method-c-sharp. – ankur

답변

0
[WebMethod] 
public static string get_runtime_values(string get_ajax_answer_title,string get_ajax_answer_des) 
    { string result; 
     if (get_ajax_answer_title.Equals("") && (get_ajax_answer_title.Equals(""))) 
     { 
      result="null"; 
     } 
     else 
     { 
      int got_question_id = getting_question_id; 
      DataHandler.breg obj = new DataHandler.breg(); 
      obj.add_anwers(got_question_id, get_ajax_answer_title, get_ajax_answer_des); 
      result="inserted"; 
     } 
     querystring object_new = new querystring(); 
     object_new.show(); 
return result; 
     } 
+0

코드를 삽입하는 것은 좋지 않습니다 ... 한 가지 점은 변경 사항이 항상 명확하지는 않으며 항상 변경 이유를 제시하는 것이 좋습니다. – freefaller

2

그 이유는 앞의 if 문이 양쪽 모두에서 return 인 경우입니다.

그 라인까지 올라갈 방법이 없습니다.

1

IF 및 ELSE 섹션에 return 문이 있기 때문입니다.

따라서 조건부 결과에 관계없이; 당신은 결코 그 아래에 가지 않습니다.

0

문제는 if 및 else 절에서 모두 메서드를 종료한다는 것입니다. 코드는 본질적으로 :

MyMethod() 
{ 
    if (someCondition) 
     return 
    else 
     return 

    // Any code at this point cannot be executed, because 
    // you have definitely returned from your method. 

} 
0
querystring object_new = new querystring(); 
object_new.show(); 

부분은 당신은 수익을 썼다 때문에 당신의 상태에 블록 문 모두에 도달하지 않을 것이다.

0

예, if 및 else 블록의 끝에 return 문이 있기 때문입니다.

[WebMethod] 
public static string get_runtime_values(string get_ajax_answer_title,string get_ajax_answer_des) 
{ 
string ret = "null"; 
if (!get_ajax_answer_title.Equals("") || (!get_ajax_answer_title.Equals(""))) 
{ 
    int got_question_id = getting_question_id; 
    DataHandler.breg obj = new DataHandler.breg(); 
    obj.add_anwers(got_question_id, get_ajax_answer_title, get_ajax_answer_des); 
    ret = "inserted"; 
} 

querystring object_new = new querystring(); 
object_new.show(); 

return ret; 

}

0

Unreachable code detected.

변경이 있기 때문에 귀하의 경우 문 리턴의 두 경로는 이르다.

if (get_ajax_answer_title.Equals("") && (get_ajax_answer_title.Equals(""))) 
    { 
     return "null" 
    } 
    else 
    { 
     return "inserted"; 
    } 
    // Can't get here. 

원본 질문에 올바르게 답변했습니다. 즉, 정적이지 않은 메서드의 인스턴스를 인스턴스화하여 메서드를 호출 할 수 있습니다. 이 (return "null") 또는하지 (return "inserted") 사실 어떠했는지

querystring object_new = new querystring(); 
object_new.show(); 
1

귀하의 방법은 if ​​문 후에 종료됩니다. 따라서 if 문 다음에있는 코드 (쿼리 문자열을 만드는 위치)는 절대로 실행될 수 없습니다.

관련 문제