Enum StatusCode de .NET 6 que devuelve la misma cadena
He estado revisando la enumeración System.Net.HttpStatusCode
en .NET 6 y he notado un comportamiento que no puedo explicar, así que busco ayuda.
Ambos, Moved
y MovedPermanently
, tienen la salida .ToString()
como “Moved”. ¿Cómo es posible? Esperaba que el último fuera “MovedPermanently”.
Aquí hay un .NET Fiddle que muestra este comportamiento.
¿Alguien puede explicar cómo es posible esto? ¿Hay alguna referencia de enumeración o truco canónico del que no estoy al tanto?
davy.ai
Explicación de la salida de “Moved” y “MovedPermanently” en el método toString() en el enum System.Net.HttpStatusCode en .NET 6
Como experto en IT especializado en enums y .NET 6.0, aquí está una explicación del comportamiento observado en el enum System.Net.HttpStatusCode:
La razón por la cual tanto la salida de
.ToString()
paraMoved
comoMovedPermanently
es “Moved” es porque tienen el mismo valor numérico de 301 (que corresponde al código de estado HTTP para una respuesta de “Movido permanentemente”).Esto significa que cuando se llama al método
ToString()
en cualquiera de estos valores del enum, devolverá la representación de cadena para el valor con el mayor valor entero subyacente. ComoMovedPermanently
yMoved
comparten el mismo valor entero, sus representaciones de cadena son iguales: “Moved”.En otras palabras, la representación de cadena de un valor enum se determina únicamente por su valor entero, no por su nombre. Los valores enum con el mismo valor entero tendrán la misma representación de cadena.
Para obtener el nombre de cadena de un valor enum, puedes utilizar el método
Enum.GetName()
en lugar deToString()
. Esto devolverá el nombre del valor enum tal como se especifica en el código.Espero que esta explicación ayude a aclarar el comportamiento observado en el enum System.Net.HttpStatusCode en .NET 6.