我需要檢查cookie是否存在值或不存在。但我不知道是否有一些快速和良好的方式這樣做,因爲如果我需要檢查3個餅乾,使用if
或try
檢查似乎不好。如何檢查cookie是否爲空
如果cookie不存在,爲什麼它不會將空字符串分配給我的變量?相反,它表明Object reference not set to an instance of an object.
我的代碼(它的工作原理,但似乎太大了這個任務,我覺得應該有這樣做的更好的方法),正如你可以看到我有這個巨大的
// First I need to asign empty variables and I don't like this
string randomHash = string.Empty;
string browserHash = string.Empty;
int userID = 0;
// Second I need to add this huge block of try/catch just to get cookies
// It's fine since I need all three values in this example so if one fails all fails
try
{
randomHash = Convert.ToString(Request.Cookies["randomHash"].Value);
browserHash = Convert.ToString(Request.Cookies["browserHash"].Value);
userID = Convert.ToInt32(Request.Cookies["userID"].Value);
}
catch
{
// And of course there is nothing to catch here
}
阻止只是爲了得到餅乾。我想是這樣的:
// Gives value on success, null on cookie that is not found
string randomHash = Convert.ToString(Request.Cookies["randomHash"].Value);
string browserHash = Convert.ToString(Request.Cookies["browserHash"].Value);
int userID = Convert.ToInt32(Request.Cookies["userID"].Value);
編輯 也許我能以某種方式重寫.Value
方法符合我的心意?
也許這不是理想的,但這塊代碼真的沒有什麼「巨大的」。 –
我仍然喜歡使用第二個。如果這是唯一的方式而不是罰款,但在我看來,應該有一個更好的。 – sed
好吧,你可以使用像'Convert.ToString(Request.Cookies [「randomHash」]!= null?Request.Cookies [「randomHash」]。Value:「」);'每行,但只是提供更長的行。 –