2016-08-27 2 views
0

Path.Combineにしようとしていますが、文字列(appdatapath)が強調表示されていると、 "フィールド初期化子は参照できません非静的フィールド、メソッド、またはproperty'MySuperAPP.appdatapath」 "完全なパス(Path.Combine&Environment.GetFolderPath)を表示しないで、localappdataパスを正しく設定する方法

コードは次のとおりです。

string appdatapath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); 

string path = Path.Combine(appdatapath, "second/part/of/folderpath"); 

は、私が欲しいのです: 文字列のパス=" C:/ユーザー/ USER /のAppData /ローカル/一部/ディレクトリ/ "

私が試したもの:

string static appdatapath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); 

string static path = Path.Combine(appdatapath,"second/part/of/folderpath").ToString; 

public static string GetMyLocalAppDir() 
     { 
      return Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData).ToString(); 
     } 
string path = Path.Combine(GetMyLocalAppDir(),"second/part/of/folderpath").ToString; 

は私が間違っている可能性がありますしようとしたんだバリアントを考える。) はあなたのアドバイスを必要とする)のを感謝!)

+0

「appdatapath」も静的にします。静的変数には動的参照を含めることはできません。 –

+0

"文字列静的appdatapath"のように宣言しているときにも強調表示され、ヘルパーは同じことを言う... 何かが見つからないのですが... –

答えて

0

あなたinitializeフィールド(この平均値:ダイナミックフィールドに値runtimeを指定する場合は、staticの値である必要があります。 したがって、 "appdatapath"をstaticと宣言する必要があります。あなたが結合するより多くのディレクトリのを持っている場合は、別途eacht一部を置く:Finaly

public or private​​type e.g. stringname of variable

public partial class MainWindow : Window 
{ 
    private static string appdatapath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); 

    private (static) string path = System.IO.Path.Combine(appdatapath, "second/part/of/folderpath"); //make this static if you want that this field can't be changed. 
    public MainWindow() 
    { 
     InitializeComponent(); 
    } 
} 

また、あなたの宣言が正しい順序であることを確認してください

Path.Combine(appdatapath, "second", "part", "of", "folderpath") 
+0

私はすでにそれを理解しています外出する.. "コーヒーを作る必要がある") –

+0

コーヒーが助けることができ、寝るのもちょっと。)幸運 –

関連する問題