using System;
class OnlyOneOption
{
// Constructor is private so users cannot create their own instances.
private OnlyOneOption( ) { }
private static int LastID = 0 ;
private readonly int id = ++ OnlyOneOption.LastID ;
static public implicit operator int ( OnlyOneOption option) { return option.id ; }
public static OnlyOneOption OptionA = new OnlyOneOption( ) ;
public static OnlyOneOption OptionB = new OnlyOneOption( ) ;
public static OnlyOneOption OptionC = new OnlyOneOption( ) ;
}
public class Test
{
public static void Main( )
{
OnlyOneOption option = OnlyOneOption.OptionA ;
switch ( option) {
case OnlyOneOption.OptionA : break ;
case OnlyOneOption.OptionB : break ;
default : throw new InvalidOperationException( ) ;
}
}
}
dXNpbmcgU3lzdGVtOwoKY2xhc3MgT25seU9uZU9wdGlvbgp7CiAgICAvLyBDb25zdHJ1Y3RvciBpcyBwcml2YXRlIHNvIHVzZXJzIGNhbm5vdCBjcmVhdGUgdGhlaXIgb3duIGluc3RhbmNlcy4KICAgIHByaXZhdGUgT25seU9uZU9wdGlvbigpIHt9CgoJcHJpdmF0ZSBzdGF0aWMgaW50IExhc3RJRCA9IDA7CiAgICBwcml2YXRlIHJlYWRvbmx5IGludCBpZCA9ICsrT25seU9uZU9wdGlvbi5MYXN0SUQ7CglzdGF0aWMgcHVibGljIGltcGxpY2l0IG9wZXJhdG9yIGludChPbmx5T25lT3B0aW9uIG9wdGlvbikgeyByZXR1cm4gb3B0aW9uLmlkOyB9CgkKICAgIHB1YmxpYyBzdGF0aWMgT25seU9uZU9wdGlvbiBPcHRpb25BID0gbmV3IE9ubHlPbmVPcHRpb24oKTsKICAgIHB1YmxpYyBzdGF0aWMgT25seU9uZU9wdGlvbiBPcHRpb25CID0gbmV3IE9ubHlPbmVPcHRpb24oKTsKICAgIHB1YmxpYyBzdGF0aWMgT25seU9uZU9wdGlvbiBPcHRpb25DID0gbmV3IE9ubHlPbmVPcHRpb24oKTsKfQoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCU9ubHlPbmVPcHRpb24gb3B0aW9uID0gT25seU9uZU9wdGlvbi5PcHRpb25BOwoJCXN3aXRjaChvcHRpb24pIHsgCgkJICBjYXNlIE9ubHlPbmVPcHRpb24uT3B0aW9uQTogYnJlYWs7CgkJICBjYXNlIE9ubHlPbmVPcHRpb24uT3B0aW9uQjogYnJlYWs7CgkJICBkZWZhdWx0OiB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigpOwoJCX0KCX0KfQ==
compilation info
prog.cs(23,24): error CS0150: A constant value is expected
prog.cs(24,24): error CS0150: A constant value is expected
Compilation failed: 2 error(s), 0 warnings
stdout