方法必须具有返回类型

时间:2012-01-21 00:05:10

标签: c# asp.net

我在尝试构建解决方案时遇到此错误。我已经尝试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;

   }

修改

现在我收到错误:“并非所有代码路径都返回值”

编辑II

抱歉忘了粘贴试用版&amp;抓住我在那里。我删除了它,它工作。如果有人想要展示如何让它与try&amp;抓住,感觉自由。

4 个答案:

答案 0 :(得分:13)

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

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块中的行数总是一个好主意。

答案 1 :(得分:6)

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

public static List<string> LoadCitiesByState(string state)

答案 2 :(得分:4)

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

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

}

这就是全部

<强>更新

如果你想添加try和catch,你可以这样做

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

}

答案 3 :(得分:1)

您需要指定返回类型,请尝试此

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

}