Because it's perfectly legal as far as the CLR is concerned. An enum is effectively an 
integral primitive that is treated slightly differently by the runtime. Any valid 
value for the primitive type is a valid value for the enum. 
By not limiting the enum to a set of values, it's possible to support scenarios where 
unknown enum values can be ignored or where flags with unknown bits set can exist. If 
it's important in your application you can perform checking yourself pretty easily 
without bogging down all uses of enums with needless value checking.

> -----Original Message-----
> From: Moderated discussion of advanced .NET topics. [mailto:ADVANCED-
> [EMAIL PROTECTED] On Behalf Of Michael Sawczyn
> Sent: Thursday, April 08, 2004 3:35 PM
> To: [EMAIL PROTECTED]
> Subject: [ADVANCED-DOTNET] Enumeration bounds checking?
> 
> This is curious, and not covered in the C# language spec that I can find.
> There appears not to be bounds checking invoked when enums are passed as
> parameters. The following compiles and runs successfully. Any thoughts as
> to why this would not be a language defect?
> 
> public enum E
> {
>    E1,
>    E2
> };
> 
> class Class1
> {
>    static void Main()
>    {
>       foo((E)50); // should throw runtime exception?
>    }
> 
>    static void foo(E e)
>    {
>       System.Console.Out.WriteLine(e);
>    }
> }
> 
> ===================================
> This list is hosted by DevelopMentor  http://www.develop.com
> Some .NET courses you may be interested in:
> 
> NEW! Guerrilla ASP.NET, 17 May 2004, in Los Angeles
> http://www.develop.com/courses/gaspdotnetls
> 
> View archives and manage your subscription(s) at
> http://discuss.develop.com

===================================
This list is hosted by DevelopMentor®  http://www.develop.com
Some .NET courses you may be interested in:

NEW! Guerrilla ASP.NET, 17 May 2004, in Los Angeles
http://www.develop.com/courses/gaspdotnetls

View archives and manage your subscription(s) at http://discuss.develop.com

Reply via email to