比較 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 成員即可。