- ベストアンサー
C#とjavaのstatic
public static Final int a = 1; というjavaのプログラムをC#で public static const int a = 1; に書き換えたらstaticは無理というエラーがでました。 C#とjavaの比較の説明サイトを2・3見たのですが、よく意味がわかりませんでした。 なぜC#ではstaticにできないのでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
MSDN を調べたら以下の記述が見つかりました。 「フィールドを static const として宣言することはできませんが、const フィールドは、その動作において本質的に静的です。 const フィールドは、型のインスタンスではなく型に属します。 そのため、const フィールドにアクセスするには、静的フィールドに対して使用するのと同じ ClassName.MemberName 表記法を使用します。 オブジェクト インスタンスは必要ありません」 http://msdn.microsoft.com/ja-jp/library/79b3xss3.aspx つまりフィールド変数の場合(ちょっと問題のある記述かもしれませんが)const(C#) == static final(Java)という事になります。 const の使用例の ConstTest でも生成したインスタンスを通して const 変数を使った後にクラス名から直接 const 変数を使っています。 http://msdn.microsoft.com/ja-jp/library/e6w8fe1b.aspx ……というか、C# の話なんだから第三者の比較説明サイトよりもまず総本山の MSDN を調べようよw
お礼
ありがとうございます。 大変よくわかりました。