共用方式為


比較 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