代碼
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 */ }
適用場景對比
| 場景 | 推薦 | 理由 |
| Session 可能為 null/類型不確定 | as + 空檢查 | 避免異常、語義清晰 |
| 業務邏輯確定類型正確 | (Type) | 失敗即 Bug,宜拋異常暴露 |
| 需同時檢查並使用 | is Type var | 一行完成判斷賦值 |
最佳實踐
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 取值的標準安全模式。
- 上一篇文章: libcurl POST 上傳文件:CURLFORM_BUFFER 指定文件名解決無文件系統平台問題
- 下一篇文章: Android後台靜默拍照:懸浮窗透明像素欺騙系統保持相機權限
Copyright ©
程式碼之家 All Rights Reserved