次の方法で共有


mailto: URI のユーザー情報を比較する

これまで Uri では、2 つの 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 が返されますが、2 番目の (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