Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从静态方法调用非静态方法_C#_Asp.net_Static - Fatal编程技术网

C# 如何从静态方法调用非静态方法

C# 如何从静态方法调用非静态方法,c#,asp.net,static,C#,Asp.net,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_ans

我需要从静态[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.
我应该怎么做才能使它工作呢?

这是因为如果前面的if语句是从两个部分返回的


它没有办法到达那一行。

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


所以不管结果的条件;您永远不会低于此值。

您的问题是,您正在退出if和else子句中的方法。您的代码基本上是:

MyMethod() 
{
    if (someCondition)
        return
    else
        return

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

}

零件将永远无法到达,因为在您的条件下,您在两个块语句中都写了一个返回。

是的,这是因为您在if和else块的末尾都有返回语句

换成

[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;
}检测到无法访问的代码。是因为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();

方法在if语句之后结束,无论它是true、returnnull还是notreturninserted。因此,在创建查询字符串的if语句之后的代码永远无法执行。

if和else部分都有一个返回值。。。你永远不会到达下一条直线。所以:用if get\u ajax\u answer\u title.Equals&&get\u ajax\u answer\u title.Equals&&get\u ajax\u answer\u des.Equals替换if get\u ajax\u answer\u title.Equals&&get\u ajax\u answer,原因完全不同。@hvd oops我没有检查完整的内容是的,freefaller已经指出了需要更改的内容。只放代码不是一个好主意。。。首先,你的改变并不总是显而易见的,最好给出改变的理由
  [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;
       }
  [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;
       }