How to set enum to null
You can either use the "?" operator for a nullable type.
public Color? myColor = null;
Or use the standard practice for enums that cannot be null by having the FIRST value in the enum (aka 0) be the default value. For example in a case of color None.
public Color myColor = Color.None;
If this is C#, it won't work: enums are value types, and can't be null
.
The normal options are to add a None
member:
public enum Color
{
None,
Red,
Green,
Yellow
}
Color color = Color.None;
...or to use Nullable
:
Color? color = null;
Make your variable nullable. Like:
Color? color = null;
or
Nullable<Color> color = null;
An enum is a "value" type in C# (means the the enum is stored as whatever value it is, not as a reference to a place in memory where the value itself is stored). You can't set value types to null (since null is used for reference types only).
That being said you can use the built in Nullable<T>
class which wraps value types such that you can set them to null, check if it HasValue
and get its actual Value
. (Those are both methods on the Nullable<T>
objects.
name = "";
Nullable<Color> color = null; //This will work.
There is also a shortcut you can use:
Color? color = null;
That is the same as Nullable<Color>
;
I'm assuming c++ here. If you're using c#, the answer is probably the same, but the syntax will be a bit different. The enum is a set of int values. It's not an object, so you shouldn't be setting it to null. Setting something to null means you are pointing a pointer to an object to address zero. You can't really do that with an int. What you want to do with an int is to set it to a value you wouldn't normally have it at so that you can tel if it's a good value or not. So, set your colour to -1
Color color = -1;
Or, you can start your enum at 1 and set it to zero. If you set the colour to zero as it is right now, you will be setting it to "red" because red is zero in your enum.
So,
enum Color {
red =1
blue,
green
}
//red is 1, blue is 2, green is 3
Color mycolour = 0;