As informações do usuário nos mailto: URIs são comparadas

Anteriormente, Uri não comparava as informações do usuário ao comparar duas Uri instâncias para igualdade. No entanto, esse comportamento não é intuitivo no caso de mailto: URIs. Com essa alteração, Uri.Equals o == operador agora considera as informações do usuário ao comparar URIs.

Comportamento anterior

Antes do .NET 8, ambas as comparações a seguir retornavam 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.

Novo comportamento

A partir do .NET 8, a primeira comparação ainda retorna true, mas a segunda comparação (de mailto URIs) retorna 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.

Versão introduzida

.NET 8

Tipo de alteração interruptiva

Esta é uma alteração comportamental.

Motivo da alteração

O comportamento anterior era inesperado e pouco intuitivo.

Se você quiser comparar apenas a parte do host dos endereços de email, compare apenas os Uri.Host membros.

APIs afetadas