クラスのメンバに定数を、すなわちpublicでstaticでconstな値を定義するとします。C++的な考えでC++/CLIで定義してみるとこうなるでしょう。
public ref class Const abstract sealed { public: static const Int32 HOGE = 123; };
しかしこれをC#側から定義を見てみると、以下のようにconstが取れてしまっています。MSILにコンパイルする時点で取れてしまうようです。
public static class Const { public static int HOGE; };
これでは簡単に Const.HOGE = 0; のように書き換えできてしまって非常にまずいです。そこで、最善なのかはわかりませんが現状での解決策はこちら。
public ref class Const abstract sealed { public: static initonly Int32 HOGE = 123; };
こうすると、C#からはこう見えます。
public static class Const { public static readonly int HOGE; }
C#のconstとreadonlyは微妙に違うんですが、とりあえずこれで書き換えはできないのでいいことにします。
追記
id:Schima:20090311