[英]Is a C# null check required prior to casting an object with "as"?
我只能在 SO 上為 Java/ActionScript 標簽找到解決方案。 如果這是重復的,請告訴我,我會刪除。
使用 ASP.Net MVC 5,我將模型類從 ViewBag 傳遞到它呈現為表單的局部視圖:
@if (ViewBag.CourseQuoteRequest != null && ViewBag.CourseQuoteRequest as CourseQuoteRequest != null)
{
<div>
@Html.Partial("~/Views/Partial/_CourseQuoteRequest.cshtml", (CourseQuoteRequest) ViewBag.CourseQuoteRequest)
</div>
}
空檢查是否可以可靠地簡化為僅檢查空一次? ViewBag 模型存在很重要(對我們而言),並且僅在部分視圖是正確的類類型時才呈現:
@if (ViewBag.CourseQuoteRequest as CourseQuoteRequest != null) // Acceptable and reliable?
以上運行,但我不確定是否有任何風險被引入。
您可以使用is
運算符簡化空檢查
@if (ViewBag.CourseQuoteRequest is CourseQuoteRequest)
此外,如果您需要課程報價請求對象,您可以使用模式匹配
@if (ViewBag.CourseQuoteRequest is CourseQuoteRequest request)
{
<div>
@Html.Partial("~/Views/Partial/_CourseQuoteRequest.cshtml", request)
</div>
}
請參閱此處獲取文檔
as
null
:)
如果您將null
傳遞給as
它將返回null
。
但使用is
運算符可以更簡化:
if (ViewBag.CourseQuoteRequest is CourseQuoteRequest courseQuoteRequest)
並根據if
可以安全地使用courseQuoteRequest
,這將是類型CourseQuoteRequest
。
@if (ViewBag.CourseQuoteRequest is CourseQuoteRequest courseQuoteRequest)
{
<div>
@Html.Partial("~/Views/Partial/_CourseQuoteRequest.cshtml", courseQuoteRequest)
</div>
}
請參閱類型模式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.