2 回答

TA贡献1848条经验 获得超6个赞
以下两个隐式运算符来自ActionResult<TValue>
/// <summary>
/// Implictly converts the specified <paramref name="value"/> to an <see cref="ActionResult{TValue}"/>.
/// </summary>
/// <param name="value">The value to convert.</param>
public static implicit operator ActionResult<TValue>(TValue value)
{
return new ActionResult<TValue>(value);
}
/// <summary>
/// Implictly converts the specified <paramref name="result"/> to an <see cref="ActionResult{TValue}"/>.
/// </summary>
/// <param name="result">The <see cref="ActionResult"/>.</param>
public static implicit operator ActionResult<TValue>(ActionResult result)
{
return new ActionResult<TValue>(result);
}
是什么允许在操作中使用多个返回类型。
[HttpGet("test123")]
public ActionResult<string> Test123() {
if(someCondition) return "String value"; //<--String
return Ok(); //<-- OkResult
}
当返回字符串时,ActionResult<TValue>(TValue value)调用运算符,返回ActionResult<TValue>另一个运算符的有效值,反之亦然。

TA贡献1847条经验 获得超11个赞
您的第一个示例利用隐式用户定义类型转换运算符,如下所示:
public static implicit operator ActionResult<TValue>(ActionResult result)
{
return new ActionResult<TValue>(result);
}
您的第二个示例 usingas无法使用隐式转换运算符,因为根据文档,它:
...仅执行引用转换、可空转换和装箱转换。as 运算符不能执行其他转换,例如用户定义的转换,而应使用强制转换表达式来执行这些转换。
- 2 回答
- 0 关注
- 105 浏览
添加回答
举报