2012-05-02 23 views
0

私のように私のクラスで宣言された静的変数があります:私はこれを変更するいくつかの機能に静的変数値

private static DirectoryInfo _extractionFolder; 

を:ダウン数行に同じ機能で、その後

_extractionFolder = new DirectoryInfo(@"C:\TEST"); 

私は変更することができますこの変数は再びですか?

私はそれをしようとしていますし、それがchange.orように思われませんそれは私には大変な一日持つています。

+3

それは最高のデザインではありませんが、あなたは、それを行うことができます。問題を理解できるようにコードを投稿してください。 – SimpleVar

+1

_extractionフォルダーは、文字列ではなくDirectoryInfoタイプです。それはあなたの問題だろうか? –

答えて

1

>かわいい日ですか?

私は思います:)他の変数と同じようにその値を設定できるはずです。

+0

はい、それはちょうど小さなバグだった:( – Zaki

+0

それは私たちの最高に起こる:) –

1

限り静的変数が行くように、あなたはそれを変更することができるはずです。あなたが設定しているものに何か間違っていなければなりません。あるいは、あなたが設定した変数をどう使っているのでしょうか?

2

文字列の値をDirectoryInfo変数に割り当てようとしています。そのコードはコンパイルされません。

private static DirectoryInfo _extractionFolder; 

public void Foo() 
{ 
    string _extractionFolder; 
    ... 
    _extractionFolder = @"C:\TEST"; // Modifies local variable, not static one 
} 

変更可能な静的変数はしかしめったに良いアイデアではない、とへのアクセス:

は、私は何が起こっていますが、あなたが実際にこのように、文字列変数を隠してローカル変数を宣言したということである疑いがありますスレッディング問題のために注意深く処理する必要があります。

+0

申し訳ありませんが、今修正されているサンプルでした... – Zaki

+1

@ Sam1:これは重要なことの教訓としてこれを取ってくださいあなたが質問を提出するとき、問題を示す短いしかし完全なプログラムを提供する。このケースでは、私はその短くて完全なプログラムを思いついて、あなたの問題を解決したと思う。 –

+0

こんにちは、私は知っているが、私は問題が静的変数と仮定したので、値を2回変更することが可能かどうか尋ねる...とにかくアドバイスありがとう:) – Zaki

1

あなたは、あなたがそのプロパティにアクセスすることができますし、後で別の「新しい」を行った後、別のディレクトリのための情報を得ることができます

_extractionFolder = new DirectoryInfo(@"c:\TEST"); 

をもしかして。それはあなたがしようとしていることですか?

+0

はい私のコードを修正 – Zaki