关于c#:为什么.NET在请求不存在的cookie时不返回null?

Why dont .NET return null when requesting cookies that don't exist?

如果我使用以下代码检索cookie:

1
Request.Cookies.Get("LoremIpsum")

这个cookie不存在,我会得到一个空的cookie而不是空的。这是为什么?

当我想查看响应cookie集合和请求cookie集合时,它会导致一些问题。如果我想要的cookie不存在于响应中,它将向响应cookie集合中添加一个空cookie,然后将其返回给我。因此,在页面加载后,请求中存在的cookie将被空响应cookie替换。

真的很烦人,我猜一定有原因,为什么.NET不返回空值?


It caused some problems

它不应该,因为它被记录在案:

If the named cookie does not exist, this method creates a new cookie with that name.

所以不要在未检查的情况下分配它:

1
2
3
4
5
var cookie = Request.Cookies.Get("LoremIpsum");
if (!string.IsNullOrEmpty(cookie.Value))
{
    Response.Cookies["LoremIpsum"] = cookie;
}

或者,不要使用Get(),而是使用索引器,如果给定的cookie不存在,它会返回null

1
2
3
4
5
var cookie = Request.Cookies["LoremIpsum"];
if (cookie != null)
{
    Response.Cookies["LoremIpsum"] = cookie;
}