我可以用吗? :语法来决定我的方法返回什么

时间:2014-10-13 02:56:24

标签: c# asp.net-web-api return-value null-coalescing-operator

我在WebAPI中有一个执行SQL的动作方法:

var sql = @"UPDATE UserTestQuestion
            SET    AnswerGridResponses = @AnswerGridResponses,
                   Answered = 1
            WHERE  UserTestQuestionId = @UserTestQuestionId
            AND    UserId = @UserId;";
var parameters = new SqlParameter[]
{
    new SqlParameter("@CreatedBy", createdBy),
    new SqlParameter("@AnswerGridResponses", answerGridResponses),
    new SqlParameter("@TestQuestionId", testQuestionId)
};

var rc = await db.Database.ExecuteSqlCommandAsync(sql, parameters);
if (rc > 0)
{
    return Ok(rc);
}
else
{
    return BadRequest();
}

我的理解是ExecuteSqlCommandAsync会返回一个数字 表示更改了多少行。所以我添加了rc > 0的支票。

我是否可以在不需要所有{}的情况下完成此操作。我曾是 考虑使用? :运算符,但我认为这些只适用于设置值,而不适用于我正在使用的返回值。

2 个答案:

答案 0 :(得分:3)

你可以做你想做的事。

return (rc > 0) ? Ok(rc) : BadRequest();

虽然有些人可能认为使用if/else更清洁。你不需要花括号,你可以这样做:

if (rc > 0)
    return Ok(rc);
else
    return BadRequest();

答案 1 :(得分:0)

正如其他人所说,你肯定可以返回三元运算符的结果。要注意的一件事是类型转换,因为它需要评估为单个返回类型。如果你试图在某种条件下返回null,那真的只会出现,在这种情况下你可以将null转换为正确的类型。

那就是说,将结果分配给变量然后返回变量是个好主意。它阅读起来更清晰,更重要的是,更容易调试。 (基本上每次我调试其中一个函数时,我最终都会将其更改为变量赋值,因此无论如何我都可以在离开函数之前看到该值。)