枚举的成员如何与枚举本身具有相同的类型?

问题描述 投票:0回答:1

枚举的内部似乎是一对数组,一个是名称字符串,另一个通常是整数。当我选择特定的枚举成员并将其传递到方法(即 NflTeams.Raiders)时,我希望参数类型为 int,或者可能是字符串和 int 的元组,但该成员实际上与以下类型相同枚举本身(即 NflTeams)。那里发生了什么事?是否传入了枚举的副本?难道枚举成员就像单例的“实例”属性一样,与单例本身是同一类型?

我在这里查看了 System.Enum 类型的 C# 源代码:https://referencesource.microsoft.com/#mscorlib/system/enum.cs,36729210e317a805。我在那里看到一个名为 ValuesAndNames 的私有类,它似乎对于枚举的工作方式非常重要。我知道它是一对具有成员名称和相应值的数组,但我仍然无法弄清楚当我选择特定枚举成员时到底会发生什么。

我还使用 ReSharper 查看一些枚举的反编译代码。如果我尝试深入了解代码中的特定成员(右键单击并转到定义),它不会让我进入该成员的源代码。

我还阅读了有关枚举的 microsoft learn 文档,例如本文:https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/enums

c# .net enums
1个回答
0
投票

枚举成员是否就像一个对象的“实例”属性? 单例,它与单例本身是同一类型吗?

或多或少,但它是一个领域。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.