Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.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 - Fatal编程技术网

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
块。我不会在这里尝试一个街区;如果您无法连接到数据库,这将是一个严重的,可能是致命的问题,需要冒泡到可以合理处理的位置。您确定不更改函数的代码,因为对我来说,该代码不会引发该错误吗