2011-11-14 4 views
3

私は、次のコードがあります(私の場合は、.ascx.cs)任意のコンテキストから私はiSito.myVarを使用しようとすると、今C#/ .NETで定数を宣言するには?

public class iSito 
{ 
    public const string myVar = "5262"; 

    public iSito() 
    { 

    } 
} 

を、私は任意の値を取得することはできません。

なぜですか?

+0

コードのサンプルを.ascx.csファイルに投稿できますか?また、具体的には「私は何の価値も得られない」という意味ですか? – Justin

+0

もう少し情報をくれますか?コンパイルエラーがありますか? –

答えて

6

iSitoクラスは別のDLL /アセンブリにありますか?その場合は、DLLを再構築して、DLLを消費するアプリケーションを再構築してください。

クライアントアプリケーションをコンパイルするときに、const値がリテラルとしてリテラルとして書き込まれます。 constを変更する場合は、クライアントアプリケーションを再構築する必要があります。

constを読み込み専用に変更するとどうなりますか? (テスト目的のために)。

+0

再構築しました!ありがとう! :) – markzzz

+0

読み込み専用に変数を宣言すると、その変数の値を変更するときにクライアントアプリケーションを再構築する必要はありません。 –

+2

@markzzz再構築の必要性についての良い点。 値がpublicの場合はstatic readonlyを使用し、内部または非公開の場合はconstのみを使用することをお勧めします –

11

あなたの例は正しく、動作するはずです - constsは自動的に静的なので、フィールドにはiSito.myVarという名前でアクセスできます。クラスにアクセスするのに必要なものと同じ(完全な名前空間であることを確認してください) 。

0

iSito.myVarが機能します。私はそれを試してみました。

+0

それがOPのためにうまくいかない理由を示唆することができます。 (ディレクティブを使用しないなど) –

+0

OK、この構文が機能しなければならないという事実を正当化したいだけでした。 – kol

+0

-1:@RuneFS – Fischermaen