-1

我需要从static[webmethod]. 它没有被调用,我使用断点对其进行了测试。我试图通过为类创建一个实例来调用它。这就是我正在尝试的。

[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();
  }

querystring 是此处类的名称。控件将根据输入进入 if 和 else 语句,但之后它直接跳出。此外,当我将鼠标悬停在 querystring 上时,它说

Unreachable code detected.

我应该怎么做才能让它工作?

4

8 回答 8

2

那是因为如果前面的陈述,你return来自两半。if

它没有办法达到那条线。

于 2012-09-11T12:16:38.790 回答
1

这是因为您在 IF 和 ELSE 部分都有一个 return 语句。

所以不管条件的结果如何;你永远不会低于那个。

于 2012-09-11T12:16:51.253 回答
1

你的方法在 if 语句之后结束,不管它是真(return "null")还是假(return "inserted")。因此,您在 if 语句(创建查询字符串的位置)之后的代码永远无法执行。

于 2012-09-11T12:18:23.497 回答
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.

}
于 2012-09-11T12:17:11.687 回答
0
querystring object_new = new querystring();
object_new.show();

part 永远不会到达,因为在您的条件下的两个块语句中,您都写了一个返回。

于 2012-09-11T12:17:39.067 回答
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;

}

于 2012-09-11T12:17:50.347 回答
0

Unreachable code detected.是因为您的 if 语句的两条路径都提前返回。

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

您已经正确回答了您的原始问题,即实例化非静态方法的实例以便能够在其上调用方法。

querystring object_new = new querystring();
object_new.show();
于 2012-09-11T12:17:52.937 回答
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;
       }
于 2012-09-11T12:19:03.700 回答