C# BaseType of enum
up vote
-2
down vote
favorite
I have a enum Color
, it may derive from long
or byte
or int
, and I want to know what type does it really derive from, long
or byte
or int
? In the process, I have met 2 problems.
First, the Color
is defined like below:
enum Color : long
{
red = 1,
black = 2,
blue = 3
}
Problem 1
I write the code below to do such things:
Console.WriteLine(typeof(Color)); // ConsoleApp7.Color
Console.WriteLine(typeof(Color).BaseType); // System.Enum
At this moment, I met my first problem: it's curious that typeof(Color).BaseType
is System.Enum
, because Color
is a enum
type.
So I'm wondering that whether you defining a enum
type like enum Enum1 { ... }
, it actually means that: class Enum1 : enum { ... }
?
Problem 2
Based on problem 1, if I want to get its real base type, I need to write:
Console.WriteLine(typeof(Color).BaseType.BaseType);
Its output is System.ValueType
, we know that int
, byte
and long
all are System.ValueType
, how can I get the keyword long?
Thanks.
c# types enums
add a comment |
up vote
-2
down vote
favorite
I have a enum Color
, it may derive from long
or byte
or int
, and I want to know what type does it really derive from, long
or byte
or int
? In the process, I have met 2 problems.
First, the Color
is defined like below:
enum Color : long
{
red = 1,
black = 2,
blue = 3
}
Problem 1
I write the code below to do such things:
Console.WriteLine(typeof(Color)); // ConsoleApp7.Color
Console.WriteLine(typeof(Color).BaseType); // System.Enum
At this moment, I met my first problem: it's curious that typeof(Color).BaseType
is System.Enum
, because Color
is a enum
type.
So I'm wondering that whether you defining a enum
type like enum Enum1 { ... }
, it actually means that: class Enum1 : enum { ... }
?
Problem 2
Based on problem 1, if I want to get its real base type, I need to write:
Console.WriteLine(typeof(Color).BaseType.BaseType);
Its output is System.ValueType
, we know that int
, byte
and long
all are System.ValueType
, how can I get the keyword long?
Thanks.
c# types enums
Possible duplicate of Get underlying/derived type of enum?
– D-Shih
Nov 8 at 3:06
add a comment |
up vote
-2
down vote
favorite
up vote
-2
down vote
favorite
I have a enum Color
, it may derive from long
or byte
or int
, and I want to know what type does it really derive from, long
or byte
or int
? In the process, I have met 2 problems.
First, the Color
is defined like below:
enum Color : long
{
red = 1,
black = 2,
blue = 3
}
Problem 1
I write the code below to do such things:
Console.WriteLine(typeof(Color)); // ConsoleApp7.Color
Console.WriteLine(typeof(Color).BaseType); // System.Enum
At this moment, I met my first problem: it's curious that typeof(Color).BaseType
is System.Enum
, because Color
is a enum
type.
So I'm wondering that whether you defining a enum
type like enum Enum1 { ... }
, it actually means that: class Enum1 : enum { ... }
?
Problem 2
Based on problem 1, if I want to get its real base type, I need to write:
Console.WriteLine(typeof(Color).BaseType.BaseType);
Its output is System.ValueType
, we know that int
, byte
and long
all are System.ValueType
, how can I get the keyword long?
Thanks.
c# types enums
I have a enum Color
, it may derive from long
or byte
or int
, and I want to know what type does it really derive from, long
or byte
or int
? In the process, I have met 2 problems.
First, the Color
is defined like below:
enum Color : long
{
red = 1,
black = 2,
blue = 3
}
Problem 1
I write the code below to do such things:
Console.WriteLine(typeof(Color)); // ConsoleApp7.Color
Console.WriteLine(typeof(Color).BaseType); // System.Enum
At this moment, I met my first problem: it's curious that typeof(Color).BaseType
is System.Enum
, because Color
is a enum
type.
So I'm wondering that whether you defining a enum
type like enum Enum1 { ... }
, it actually means that: class Enum1 : enum { ... }
?
Problem 2
Based on problem 1, if I want to get its real base type, I need to write:
Console.WriteLine(typeof(Color).BaseType.BaseType);
Its output is System.ValueType
, we know that int
, byte
and long
all are System.ValueType
, how can I get the keyword long?
Thanks.
c# types enums
c# types enums
asked Nov 8 at 3:01
Caesium
599
599
Possible duplicate of Get underlying/derived type of enum?
– D-Shih
Nov 8 at 3:06
add a comment |
Possible duplicate of Get underlying/derived type of enum?
– D-Shih
Nov 8 at 3:06
Possible duplicate of Get underlying/derived type of enum?
– D-Shih
Nov 8 at 3:06
Possible duplicate of Get underlying/derived type of enum?
– D-Shih
Nov 8 at 3:06
add a comment |
1 Answer
1
active
oldest
votes
up vote
2
down vote
accepted
You want an Underlying type, not Base type:
var underlyingType = Enum.GetUnderlyingType(typeof(ConsoleColor))
Also note that any specific enum (like your Color
) is a value type and base type of System.Enum
is System.ValueType
(despite the fact that System.Enum
is a reference type). That's why your typeof(Color).BaseType.BaseType
equals System.ValueType
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
2
down vote
accepted
You want an Underlying type, not Base type:
var underlyingType = Enum.GetUnderlyingType(typeof(ConsoleColor))
Also note that any specific enum (like your Color
) is a value type and base type of System.Enum
is System.ValueType
(despite the fact that System.Enum
is a reference type). That's why your typeof(Color).BaseType.BaseType
equals System.ValueType
add a comment |
up vote
2
down vote
accepted
You want an Underlying type, not Base type:
var underlyingType = Enum.GetUnderlyingType(typeof(ConsoleColor))
Also note that any specific enum (like your Color
) is a value type and base type of System.Enum
is System.ValueType
(despite the fact that System.Enum
is a reference type). That's why your typeof(Color).BaseType.BaseType
equals System.ValueType
add a comment |
up vote
2
down vote
accepted
up vote
2
down vote
accepted
You want an Underlying type, not Base type:
var underlyingType = Enum.GetUnderlyingType(typeof(ConsoleColor))
Also note that any specific enum (like your Color
) is a value type and base type of System.Enum
is System.ValueType
(despite the fact that System.Enum
is a reference type). That's why your typeof(Color).BaseType.BaseType
equals System.ValueType
You want an Underlying type, not Base type:
var underlyingType = Enum.GetUnderlyingType(typeof(ConsoleColor))
Also note that any specific enum (like your Color
) is a value type and base type of System.Enum
is System.ValueType
(despite the fact that System.Enum
is a reference type). That's why your typeof(Color).BaseType.BaseType
equals System.ValueType
edited Nov 8 at 3:15
answered Nov 8 at 3:05
vasily.sib
1,8871919
1,8871919
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53200942%2fc-sharp-basetype-of-enum%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Possible duplicate of Get underlying/derived type of enum?
– D-Shih
Nov 8 at 3:06