这两个电话有什么区别?我的最终目标是拥有
通过网络发送的Accept: application/json,而不是附加到其他MIME类型的某些默认集合。

HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add("Accept", "application/json");


client.DefaultRequestHeaders
  .Accept
  .Add(new MediaTypeWithQualityHeaderValue("application/json"));

我的CLR是.NET Core 2.0。

嗅电线没有区别:

# just .Add("Accept"...
~ % nc -l 8000
GET / HTTP/1.1
Connection: Keep-Alive
Accept: application/json
[...]

# with MediaTypeWithQualityHeaderValue
~ % nc -l 8000
GET / HTTP/1.1
Connection: Keep-Alive
Accept: application/json
[...]

因此,在这种类型的怪异命名之外,没有别的可得的东西对吗?

最佳答案

没有区别。

DefaultRequestHeaders.Accept 是字符串类型的集合,您可以在其中添加 header 以使用新的MediaTypeWithQualityHeaderValue实例接受。

client.DefaultRequestHeaders 是一个字典,它接受请求 header 的键和值,并根据它们匹配结果。

DefaultRequestHeaders

有超载。

它们之间的唯一区别是,DefaultRequestHeaders.Accept将要求您初始化MediaTypeWithQualityHeaderValue类的新实例,从而在堆中产生另一种引用类型,而client.DefaultRequestHeaders将数据添加到字典中,从而节省了资源成本和需要初始化一个新实例。

真正取决于用户的使用方式和使用方式。

08-04 22:54