10

I've been writing some code comments, and I've been trying to refer to the index integer of a enum type, but I'm not sure what it's called. I'm tempted to call it the identifier, however there is likely a word that already exists.

It's hopefully easier to see what I mean with a example.

    enum Weekday
    {
        Monday,
        Tuesday,
        Wednesday,
        Thursday,
        Friday
    }

    /// <summary>
    /// A test method
    /// </summary>
    /// <param name="weekdayId">The ... for the enum weekday</param>
    void test(int weekdayId)
    {

    }

I'm leaning towards identifier, as that seems to fit with my comment, but I just wanted to check first that there wasn't a word already. If not I think it should be called the gloopdedoop.

3
  • 2
    In other languages, it may be called the ordinal. Commented Nov 20, 2019 at 22:52
  • In even other languages, it may be called the discriminant. Commented Nov 22, 2019 at 12:29
  • Just "value" works and even already has precedent: docs.microsoft.com/en-us/dotnet/api/system.enum.getvalues Commented Nov 26, 2019 at 0:07

2 Answers 2

16

C# enums are a set of named [integral numeric] constants.

Each constant in the enum has a numeric value. So the word you are looking for, for the "the index integer of a enum", is just "value".

7
  • 5
    Something like "The value of the enum". That's it. The name of the enum is the "named constant" (Friday) the value of the enum Fridays is 5 (or whatever). Commented Nov 20, 2019 at 11:47
  • 2
    @robbie-dee, please don't change "numeric" to "integer". C# enum values can be any of the integral numeric types, not just integer. Commented Nov 20, 2019 at 13:19
  • 2
    @DavidArno Numeric could be taken to mean floating point types - hence my change, but feel free to be wrong (again) :) Commented Nov 20, 2019 at 13:21
  • 3
    @DubDub: Arguably, you can call Weekday.Friday a value just as much as 5 (its integer counterpart) is a value. But since these are completely interchangeable from a C# perspective, it often doesn't particularly matter to distinguish between them. When it does, using "integer value" to distinguish seems more than adequate. Commented Nov 20, 2019 at 13:56
  • 1
    This is incorrect for the reason I've described. It must be an integral type. Simply calling it numeric is wrong. Commented Nov 20, 2019 at 21:30
4

You're just talking about the integral value here. I'd avoid using the word "index" as it doesn't necessarily follow that it will be an index in the way you describe. You can set any values for enumerations - they don't have to start at zero or one or even be consecutive.

I'd also strongly avoid referring them as numerics as that has a very specific meaning in programming - those being the super set of all integer AND floating point types. Best to avoid the confusion.

But generally speaking, I've heard programmers refer to the enum value as simply "the value" or "underlying value". It is taken as understood (by seasoned programmers) that it is an integer.

2
  • FWIW, in Java it is officially called the ordinal. (But Java enums are entirely different from C# enums!) Commented Nov 20, 2019 at 22:53
  • "It is taken as understood (by seasoned programmers) that it is an integer." And integer has a specific meaning too. But really experienced programmers understand that by "integer" you mean "any value within the numeric range supported by the chosen underlining type of the enum". Of course inexperienced programmers might assume only integers are allowed. So by being incorrectly pedantic, you've sown more confusion. Which is why it's better to just use the general term "numeric" and guide the user to a precise description of supported numeric types and values. Just as I did. Commented Nov 21, 2019 at 8:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.