C# 方法必须具有返回类型
当我试图构建我的解决方案时,我总是遇到这个错误。我尝试了C# 方法必须具有返回类型,c#,asp.net,C#,Asp.net,当我试图构建我的解决方案时,我总是遇到这个错误。我尝试了public string,只是public,但无法让它工作。有什么想法吗?谢谢 [WebMethod] public static LoadCitiesByState(string state) { DataTable dt = SharedDataAccess.GetCities(state); List<string> cities = new List<string>();
public string
,只是public
,但无法让它工作。有什么想法吗?谢谢
[WebMethod]
public static LoadCitiesByState(string state)
{
DataTable dt = SharedDataAccess.GetCities(state);
List<string> cities = new List<string>();
foreach (DataRow row in dt.Rows)
{
cities.Add(row[0].ToString());
}
return cities;
}
[WebMethod]
公共静态LoadCitiesByState(字符串状态)
{
DataTable dt=SharedDataAccess.GetCities(州);
列表城市=新列表();
foreach(数据行中的数据行)
{
cities.Add(行[0].ToString());
}
回归城市;
}
编辑
现在我得到一个错误:“不是所有的代码路径都返回一个值”
编辑II
对不起,我忘了把我的try&catch贴在那里。我把它们取下来,它就起作用了。如果有人想演示如何使其与try&catch一起工作,请随意。您需要指定要返回的变量类型:
public static List<string> LoadCitiesByState(string state)
公共静态列表加载CitiesByState(字符串状态)
编辑“尝试/捕获”:
无论是否抛出异常,都需要确保返回某些内容。因此,请事先声明返回变量,并在try/catch块之后返回它:
public static List<string> LoadCitiesByState(string state)
{
List<string> cities = new List<string>();
try {
DataTable dt = SharedDataAccess.GetCities(state);
} catch // specify exceptions here
{
//exception handling
}
foreach (DataRow row in dt.Rows)
{
cities.Add(row[0].ToString());
}
return cities;
}
公共静态列表加载CitiesByState(字符串状态)
{
列表城市=新列表();
试一试{
DataTable dt=SharedDataAccess.GetCities(州);
}catch//在此处指定异常
{
//异常处理
}
foreach(数据行中的数据行)
{
cities.Add(行[0].ToString());
}
回归城市;
}
一般来说,最好尽量减少try块中的行数。返回城市时使用的是
列表
,因此这应该是您的返回类型
公共静态列表按状态加载CitiesByState(字符串状态)
方法的问题在于需要定义要返回的数据类型
[WebMethod]
public static List<string> LoadCitiesByState(string state)
{
DataTable dt = SharedDataAccess.GetCities(state);
List<string> cities = new List<string>();
foreach (DataRow row in dt.Rows)
{
cities.Add(row[0].ToString());
}
return cities;
}
[WebMethod]
公共静态列表LoadCitiesByState(字符串状态)
{
DataTable dt=SharedDataAccess.GetCities(州);
列表城市=新列表();
foreach(数据行中的数据行)
{
cities.Add(行[0].ToString());
}
回归城市;
}
就这些
更新
如果您想添加“尝试并捕获”,您可以这样做
[WebMethod]
public static List<string> LoadCitiesByState(string state)
{
List<string> cities = new List<string>();
try
{
DataTable dt = SharedDataAccess.GetCities(state);
foreach (DataRow row in dt.Rows)
{
cities.Add(row[0].ToString());
}
}
catch(Exception e)
{
//logs your exception
}
return cities;
}
[WebMethod]
公共静态列表LoadCitiesByState(字符串状态)
{
列表城市=新列表();
尝试
{
DataTable dt=SharedDataAccess.GetCities(州);
foreach(数据行中的数据行)
{
cities.Add(行[0].ToString());
}
}
捕获(例外e)
{
//记录您的异常
}
回归城市;
}
您需要指定返回类型,请尝试以下操作
[WebMethod]
public static List<string> LoadCitiesByState(string state)
{
DataTable dt = SharedDataAccess.GetCities(state);
List<string> cities = new List<string>();
foreach (DataRow row in dt.Rows)
{
cities.Add(row[0].ToString());
}
return cities;
}
[WebMethod]
公共静态列表LoadCitiesByState(字符串状态)
{
DataTable dt=SharedDataAccess.GetCities(州);
列表城市=新列表();
foreach(数据行中的数据行)
{
cities.Add(行[0].ToString());
}
回归城市;
}
这有帮助,但遇到了另一个问题。编辑上面的内容。这是函数的全部内容吗?“并非所有代码路径都返回值”表示某个分支的末尾没有return
语句,但我在上面粘贴的内容中没有看到。是的,这就是整个函数。我要把它通过州政府AJAX@TCC-我添加代码是为了演示如何使用try/catch来执行此操作,看看这是否对您有效。@tzaman“一般来说,尽量减少try块中的行数总是一个好主意。”是的,但您的代码不会编译,因为DataTable dt
的范围仅限于try
块中。foreach
也需要进入try
块。我不会在这里尝试一个街区;如果您无法连接到数据库,这将是一个严重的,可能是致命的问题,需要冒泡到可以合理处理的位置。您确定不更改函数的代码,因为对我来说,该代码不会引发该错误吗