系统会比较 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 成员。

受影响的 API