方法必须具有返回类型

本文关键字:返回类型 方法 | 更新日期: 2023-09-27 18:21:03

当我试图构建解决方案时,我一直会遇到这个错误。我试过public stringpublic,但都无法使用。有什么想法吗?谢谢

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

编辑

现在我得到错误:"并非所有代码路径都返回值"

编辑II

抱歉忘记粘贴try&我在里面抓到的东西。我把它们移走了,效果很好。如果有人想展示如何使用try&抓住,尽管感觉自由。

方法必须具有返回类型

您需要指定要返回的变量的类型:

public static List<string> LoadCitiesByState(string state)

为try/catch编辑:

无论是否抛出异常,都需要确保返回某些内容。因此,事先声明返回变量,并在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;
}

一般来说,尽量减少try块中的行数总是一个好主意。

您返回的城市是List<string>,因此这应该是您的返回类型。

public static List<string> LoadCitiesByState(string state)

方法的问题是,您需要定义要返回的数据类型

[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]
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]
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;
}