C# .NET Uri.ToString()会破坏URL吗?

C# .NET Uri.ToString()会破坏URL吗?,c#,.net,url,uri,C#,.net,Url,Uri,我注意到,如果调用Uri.ToString()时,后面的Uri是带有百分比编码空格(%20)的URL,则会导致URL格式错误: // result: "http://example.com/test segment" new Uri("http://example.com/test%20segment").ToString(); 由于(相反的语句不正确)和带有非编码空格的URL,使用Uri作为URL的容器似乎不安全 这是正确的行为吗?根据: 根据: 大概ToString()正在按照父编码规范解

我注意到,如果调用
Uri.ToString()
时,后面的Uri是带有百分比编码空格(%20)的URL,则会导致URL格式错误:

// result: "http://example.com/test segment"
new Uri("http://example.com/test%20segment").ToString();
由于(相反的语句不正确)和带有非编码空格的URL,使用Uri作为URL的容器似乎不安全

这是正确的行为吗?

根据:

根据:


大概
ToString()
正在按照父编码规范解析
%20
,并确定它应该是一个空格。说它应该返回带有规则空格的字符串。如果您想要
%20
而不是空格,请使用.OriginalString。您指出的文档中说
.ToString()
返回空格,而
。OriginalString
返回
%20
。大概
ToString()
正在按照父编码规范解析
%20
,并确定它应该是一个空间。说它应该返回带有规则空格的字符串。如果希望使用
%20
而不是空格,请使用.OriginalString。您指出的文档中说
.ToString()
返回空格,而
.OriginalString
返回
%20
// result: "http://example.com/test segment"
new Uri("http://example.com/test%20segment").ToString();

// result: "http://example.com/test%20segment"
new Uri("http://example.com/test%20segment").OriginalString;