//取得使用者資訊
public User GetUser()
{
//取得 ASP.NET 使用者
var user = HttpContext.Current.User;
//是否通過驗證
if (user?.Identity?.IsAuthenticated == true)
{
//取得 FormsIdentity
var identity = (FormsIdentity)user.Identity;
//取得 FormsAuthenticationTicket
var ticket = identity.Ticket;
//將 Ticket 內的 UserData 解析回 User 物件
return JsonConvert.DeserializeObject<User>(ticket.UserData);
}
return null;
}
只有在運算元為非 null 時,才執行成員或元素存取作業
用白話說
user(identity)的值有兩種情形
1.not null - 此時寫不寫 ? 都沒差
2.null - 寫 null 得到 null 的結果;不寫 null 會得到 exception
所以為了「保險」起見
就在後面寫個 ?
時間過得真快
兩個半月時間過去了
不知道還會覺得 C# 很難嗎
當在讀取一個null的物件時,會發生NullReferenceException的例外
因此需要對物件是否為null做判斷,確保不會有例外的產生
if (user?.Identity?.IsAuthenticated == true)
上列?.的判斷就相當於以下的code
code的長度和簡潔度就差很多
if (user != null)
{
if (user.Identity != null)
{
if (user.Identity.IsAuthenticated == true)
{
// 後續處理
}
}
}
拿掉?.也沒有問題
因為HttpContext.Current.User在你執行過程不是null
但某一天他是null的話就...