Constant Enum: Circular definition

29 Apr

If you have declared an enum field as constant you may get following exception:

The evaluation of the constant value for … involves a circular Definition.

The code where this exception appears looks like:

private const Parity Parity = Parity.None;

Well, thats strange. There is no error. I declare a constant field with the same name as the name of the type. This is allowed, because I can also write following line of code, and this would compile:

private const String String = "HELLO";

The problem with enums is that the compiler interprets the Parity from Parity.None not as the name of the enum-type but as the name of the field. Hence, we have a circular reference because the constant is defined by the constant itself. To solve the compile error you have two options: either you add the fully qualified name to the third Parity value or you change the name of the field.

private const Parity Parity = System.IO.Ports.Parity.None;
private const Parity ParityValue = Parity.None;

Note: If you use tools like ReSharper then after a code clean up the qualifier might be removed. If that is the case I would suggest you to use the second Option, to rename the the name of the field.

Leave a comment

Posted by on April 29, 2013 in C-Sharp


Tags: ,

Leave a Reply

Please log in using one of these methods to post your comment: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: