系统会比较 mailto:
URI 中的用户信息
以前,在比较两个 Uri
实例是否相等时,Uri 不会比较用户信息。 但是,在 mailto:
URI 的情况下,此行为并不直观。 通过这项更改,Uri.Equals 和 ==
运算符现在会在比较 URI 时考虑用户信息。
旧行为
在 .NET 8 之前,以下两项比较均返回 true
。
Uri uri1 = new Uri("https://user1@www.microsoft.com");
Uri uri2 = new Uri("https://user2@www.microsoft.com");
System.Console.WriteLine(uri1 == uri2); // True.
Uri uri3 = new Uri("mailto:user1@microsoft.com");
Uri uri4 = new Uri("mailto:user2@microsoft.com");
System.Console.WriteLine(uri3 == uri4); // True.
新行为
从 .NET 8 开始,第一个比较仍返回 true
,但第二个比较(mailto
URI)返回 false
。
Uri uri1 = new Uri("https://user1@www.microsoft.com");
Uri uri2 = new Uri("https://user2@www.microsoft.com");
System.Console.WriteLine(uri1 == uri2); // True.
Uri uri3 = new Uri("mailto:user1@microsoft.com");
Uri uri4 = new Uri("mailto:user2@microsoft.com");
System.Console.WriteLine(uri3 == uri4); // False.
引入的版本
.NET 8
中断性变更的类型
此更改为行为更改。
更改原因
之前的行为出乎意料且不直观。
建议的操作
如果想要仅比较电子邮件地址的主机部分,请仅比较 Uri.Host 成员。