C# 如何从静态方法调用非静态方法
我需要从静态[webmethod]调用非静态方法。它没有得到调用,我使用断点对它进行了测试。我试图通过创建类的实例来调用它。 这就是我正在尝试的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]
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;
}