如何解决如何根据.Net 中的条件将列表分配给变量
我必须发布客户详细信息(列出硬编码仅供参考),而且我想发布一个具有唯一 ID 的列表。
我编写了一个简单的 For 循环,仅当我要发布的详细信息具有唯一 Id 时,它才会将客户详细信息添加到列表中,但是我在此处收到错误消息,显示“并非所有代码路径都返回值”。请告诉我是否有其他简单的方法。
public class CustomerController : ControllerBase
{
List<Customer> customers = new List<Customer>();
public CustomerController()
{
customers.Add(new Customer { Id = "1",FirstName = "Batman",LastName = "Gotham",dob = "17/04/1978",SSN = "1000000000" });
customers.Add(new Customer { Id = "2",FirstName = "Superman",LastName = "Krypton",dob = "18/04/1938",SSN = "2000000000" });
customers.Add(new Customer { Id = "3",FirstName = "Wonder Woman",LastName = "Themyscira",dob = "22/03/1976",SSN = "3000000000" });
}
[HttpPost]
public IActionResult Post([FromBody]Customer customer)
{
int n = customers.Count;
for (int i = 0; i < n; i++)
{
if (customer.Id != customers[i].Id)
{
customers.Add(customer);
string msg = "done";
return Ok(msg);
}
}
}
}
解决方法
您会收到 “并非所有代码路径都返回值” 错误,因为该方法可能会在没有控制流进入 if 语句的情况下结束。你需要在循环结束后返回一些东西。例如,return BadRequest(msg);
但无论如何你的逻辑是有缺陷的。您在列表中发现不同的 ID 后立即添加该客户,但在列表的更下方可能存在具有相同 ID 的客户。
此外,您不必自己执行对 Id 的搜索。只需使用现有的 Enumerable.Any Method。
[HttpPost]
public IActionResult Post([FromBody] Customer customer)
{
if (customers.Any(c => c.Id == customer.Id)) {
string msg = "duplicate";
return BadRequest(msg);
} else {
string msg = "done";
customers.Add(customer);
return Ok(msg);
}
}
,
一个方法每次都需要返回一些东西(return null
也可以),所以当返回在if
语句中时,它可能不会在所有循环迭代中输入那个if语句,因此不会return
任何东西,因此您需要在 return
语句中或 else
语句之外使用另一个 if
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。