gpt4 book ai didi

c# - 对象引用未设置为对象的实例 asp.net,c#

转载 作者:太空宇宙 更新时间:2023-11-03 10:54:16 25 4
gpt4 key购买 nike

嘿伙计们,当我尝试将 CartID 分配给字符串时出现此错误。非常感谢任何帮助。谢谢

private static string CartID
{
get
{
HttpContext cont = HttpContext.Current;
string id = cont.Request.Cookies["ShopCartID"].Value;

if (cont.Request.Cookies["ShopCartID"] != null)
{
return id;
}
else
{
id = Guid.NewGuid().ToString();
HttpCookie cookie = new HttpCookie("ShopCartID", id);
int days = 7;
DateTime currentDate = DateTime.Now;
TimeSpan timeSpan = new TimeSpan(days, 0, 0, 0);
DateTime expiration = currentDate.Add(timeSpan);
cookie.Expires = expiration;
cont.Response.Cookies.Add(cookie);
return id.ToString();
}
}
}

最佳答案

您的问题中没有 CartID(类本身除外),所以我假设您指的是 ShopCartID

如果不存在具有该名称的 cookie,

cont.Request.Cookies["ShopCartID"] 可能返回 null。您不能在 null 引用上调用成员(在本例中为 Value)。您必须首先检查 cookie 是否为 null:

HttpCookie cookie = cont.Request.Cookies["ShopCartID"];
string id = cookie != null ? cookie.Value : null;

编辑

这种模式非常普遍,以至于我的公共(public)代码存储库中有这样的定义:

public static class ObjectExtensions
{
public static TResult IfNotNull<TValue, TResult>(this TValue value, Func<TValue, TResult> @delegate)
where TValue : class
{
if (@delegate == null)
{
throw new ArgumentNullException("delegate");
}

return value != null ? @delegate(value) : default(TResult);
}
}

这样使用:

string id = cont.Request.Cookies["ShopCartID"].IfNotNull(arg => arg.Value);

关于c# - 对象引用未设置为对象的实例 asp.net,c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20086129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com