.NET 6 StatusCode 枚举返回相同的字符串

.NET 6 StatusCode Enum's returning same string

我一直在查看 .NET 6 中的 System.Net.HttpStatusCode 枚举,并注意到一些我无法解释的行为,因此寻求帮助。

MovedMovedPermanently.ToString() 输出都是“已移动”。这怎么可能?我希望后者是“MovedPermanently”。

Here is a .NET Fiddle 显示行为。

谁能解释一下这是怎么可能的?是否有一些我不知道的枚举参考/规范技巧?

HttpStatusCode.MovedHttpStatusCode.MovedPermanently 共享相同的值 301

// https://source.dot.net/#System.Net.Primitives/System/Net/HttpStatusCode.cs,31
enum HttpStatusCode
{
    ...
    MovedPermanently = 301,
    Moved = 301,
    ...
}

因此,ToString 可能是 "Moved""MovedPermanently"(我不确定这是确定性的)

Enum.ToString source code