gpt4 book ai didi

c# - 并非所有代码路径都返回 Array 的值

转载 作者:太空宇宙 更新时间:2023-11-03 21:29:49 25 4
gpt4 key购买 nike

我收到以下错误:

Not all code paths return a value for Array

这是我的代码:

public Product[] LoadAllDatas()
{
SqlConnection con = new SqlConnection("Server=####; Integrated Security=true;Database=Store");

SqlCommand cmd = new SqlCommand("usp_LoadTestData");
cmd.Connection = con;
con.Open();
cmd.CommandType = CommandType.StoredProcedure;
SqlDataReader dr = cmd.ExecuteReader();

while (dr.Read())
{
return new Product[]
{
new Product() { ProductId = Convert.ToInt32(dr["Id"]), Name = dr["Name"].ToString(), AdminContent = dr["AdminComment"].ToString(), ProductTemplate = dr["ProductTemplateId"].ToString(), CreatedOnUtc = Convert.ToDateTime(dr["CreatedOnUtc"]) }
};
}

con.Close();
con.Dispose();
}

最佳答案

嗯,您基本上需要考虑如果 dr.Read() 返回 false 会发生什么 - 即如果没有结果。在这种情况下,您可能希望抛出异常……或者可能返回一个空数组。

此外,您应该对阅读器、命令和连接使用 using 语句来关闭它们 - 目前,如果您确实返回结果,则不会关闭连接。

最后,您总是会返回一个仅包含单个 Product 的数组。那真的是你想要的吗?我希望您返回一个包含所有结果的数组。

下面是解决所有这些问题的一些示例代码,在没有结果的情况下返回一个空数组:

public Product[] LoadAllDatas()
{
using (SqlConnection con = new SqlConnection(...))
{
con.Open();
using (SqlCommand cmd = new SqlCommand("usp_LoadTestData", con))
{
cmd.CommandType = CommandType.StoredProcedure;
using (SqlDataReader dr = cmd.ExecuteReader())
{
List<Product> results = new List<Product>();
while (dr.Read())
{
results.Add(new Product {
ProductId = Convert.ToInt32(dr["Id"]),
Name = dr["Name"].ToString(),
AdminContent = dr["AdminComment"].ToString(),
ProductTemplate = dr["ProductTemplateId"].ToString(),
CreatedOnUtc = Convert.ToDateTime(dr["CreatedOnUtc"])
});
}
return results.ToArray();
}
}
}
}

最后一点 - 如果您的阅读器中的值属于合适的类型,我希望您能够将您的 Product 实例化简化为:

new Product
{
ProductId = (int) dr["Id"],
Name = (string) dr["Name"],
AdminContent = (string) dr["AdminComment"],
ProductTemplate = (string) dr["ProductTemplateId"],
CreatedOnUtc = (DateTime) dr["CreatedOnUtc"]
}

关于c# - 并非所有代码路径都返回 Array 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24879873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com