【问题标题】:How to set localappdata path properly, not showing the full path(Path.Combine & Environment.GetFolderPath)如何正确设置localappdata路径,不显示完整路径(Path.Combine & Environment.GetFolderPath)
【发布时间】:2016-08-27 10:15:39
【问题描述】:

我正在尝试 Path.Combine,但在突出显示字符串(appdatapath)后,助手说“字段初始化程序无法引用非静态字段、方法或属性'MySuperAPP.appdatapath'”

代码是:

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

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

我想要的是: string path = "C:/Users/USER/AppData/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;

我认为我尝试的变体可能是错误的..) 需要你的建议)谢谢!)

【问题讨论】:

  • 使“appdatapath”也是静态的。静态变量不能包含动态引用。
  • 当我将它声明为“字符串静态应用程序数据路径”时,它也会保持突出显示,并且助手说的也是一样的......缺少一些东西但无法弄清楚是什么......

标签: c# visual-studio


【解决方案1】:

当您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 privatestatic or nottype e.g. stringname of variable

最后:如果你有更多的目录要组合,把每个部分分开:

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

【讨论】:

  • 感谢指点我)我已经想通了..“需要煮点咖啡”)
猜你喜欢
  • 1970-01-01
  • 2021-06-16
  • 1970-01-01
  • 2013-11-25
  • 1970-01-01
  • 1970-01-01
  • 2014-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多