请考虑以下代码:
void Main()
{
HttpVersion version;
string s = "HTTP/1.1";
version = s == "HTTP/1.1" ? HttpVersion.Version11 : HttpVersion.Version10;
}
这会引发错误
无法隐式转换类型' System.Version'到了System.Net.HttpVersion'
即使System.Version
无法推断,也不是HttpVersion
's inheritance的一部分。
明确的演员表
void Main()
{
HttpVersion version;
string s = "HTTP/1.1";
version = s == "HTTP/1.1" ? (HttpVersion) HttpVersion.Version11 : (HttpVersion) HttpVersion.Version10;
}
或显式命名空间命名
void Main()
{
System.Net.HttpVersion version;
string s = "HTTP/1.1";
version = s == "HTTP/1.1" ? System.Net.HttpVersion.Version11 : System.Net.HttpVersion.Version10;
}
不要有所作为。
问题很简单:为什么System.Version
干扰应该是一个不相关的类?
答案 0 :(得分:2)
Version10
的Version11
和HttpVersion
个静态字段返回System.Version
个对象,而不是HttpVersion
个对象。所以它在技术上并不相关。
现在,为什么它这样做,我完全不知道。但您会注意到使用它的地方(例如HttpWebRequest.ProtocolVersion
)也会使用System.Version
。这就是你想要使用的东西。
对我来说,它有点像HttpVersion
应该是一个静态类,因为它没有从Object
继承的实例成员......
答案 1 :(得分:1)
HttpVersion.Version11
和HttpVersion.Version10
都返回Version
对象,您尝试将其存储在HttpVersion
变量中。