2016-08-27 191 views
0

我想Path.Combine,但有突出顯示的字符串(appdatapath),助手說是「一個字段初始值設定項不能引用非靜態字段,方法或property'MySuperAPP.appdatapath 「」如何正確設置localappdata路徑,不顯示完整路徑(Path.Combine&Environment.GetFolderPath)

的代碼是:

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

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

我想是: 串路徑=」 C:/用戶/用戶/應用程序數據/ Local/Some/Dir /「

我試過了:

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

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(); 
    } 
} 

另外,還要確保你的聲明是正確的順序:

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

Finaly:如果你有多個目錄的結合,分別提出eacht部分:

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

感謝指出我)我已經想到它「 」需要喝點咖啡「) –

+0

咖啡可以幫忙,還有點睡覺;)祝你好運 –