首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

ASP.NET Session 類型轉換:as 操作符等同於強制轉型但失敗返回 null

     編輯:程式設計綜合問答

代碼

Admin admin = Session["user"] as Admin;

含義

as 是 **安全類型轉換操作符**:

  • 若 Session["user"] 實際類型為 Admin 或其子類 → 返回轉換後的引用。
  • 若為 null 或不兼容類型 → **返回 null,不拋異常**。

等價寫法

// 1. as 操作符 (推薦,簡潔安全)
Admin admin = Session["user"] as Admin;

// 2. 顯式強制轉型 (失敗拋 InvalidCastException)
Admin admin = (Admin)Session["user"];

// 3. 模式匹配 (C# 7+)
if (Session["user"] is Admin a) { /* 用 a */ }

適用場景對比

最佳實踐

Admin admin = Session["user"] as Admin;
if (admin == null) {
    Response.Redirect("Login.aspx"); // 未登錄/類型錯誤跳轉登錄
    return;
}
// 後續安全使用 admin
string name = admin.UserName;

避坑提示

  • as **只能用於引用類型/可空值類型**,值類型 (如 int) 必須用 (int?) 或模式匹配。
  • as 不會執行用戶定義轉換操作符,僅進行引用/繼承/裝箱轉換。
  • Session 存儲時確保類型一致:Session["user"] = admin; (存具體類),取時 as Admin。

核心口訣:**as = 強轉 + 失敗返回 null**,配合 if (x == null) 守衛,是 ASP.NET Session 取值的標準安全模式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
場景推薦理由
Session 可能為 null/類型不確定as + 空檢查避免異常、語義清晰
業務邏輯確定類型正確(Type)失敗即 Bug,宜拋異常暴露
需同時檢查並使用is Type var一行完成判斷賦值