Tôi đã sau hành động ASP.NET Web Api 2 với một ternary nếu trở lại:"Không thể xác định được vì không có chuyển đổi ngầm" với ternery nếu trở lại
[HttpDelete]
public IHttpActionResult Delete()
{
bool deleted;
// ...
return deleted ? this.Ok() : this.NotFound();
}
tôi nhận được một
Loại biểu thức điều kiện không xác định được vì không không chuyển đổi ngầm giữa 'System.Web.Http.Results.OkResult' và 'System.Web.Http.Results.NotFoundResult'
khi cả hai đều triển khai IHttpActionResult
.
Tuy nhiên nếu tôi loại bỏ các ternary nếu, trình biên dịch là hạnh phúc:
if (deleted)
{
return this.Ok();
}
return this.NotFound();
Tại sao điều này?
Tại sao khối thứ hai của Sam công việc mã mà không rõ ràng đúc cho 'IHttpActionResult', chỉ cần ra khỏi sự tò mò? Đây có phải là cái gì đó đặc biệt đối với toán tử điều kiện '?:' Không? –
@GrantWinney Có phải là – dcastro
@GrantWinney Xem câu trả lời đã chỉnh sửa của tôi. –