【问题标题】:Setting a path to files设置文件路径
【发布时间】:2016-10-18 09:59:50
【问题描述】:

我想用https://stackoverflow.com/a/11967357/5425608这个方法来创建一个文件。但是,var 只能在方法https://stackoverflow.com/a/5337470/5425608 中使用。如何将路径名称转换为类变量以供类中的其他方法访问。

例如,在下面的代码中,“labelPath”不在 setPaths() 方法的 var labelPath 范围内。我还有其他使用“path”和“objectPath”的方法,这些变量不在这些方法的范围内。

任何帮助将不胜感激。

    public Form2()
    {
        InitializeComponent();
        setPaths();
        current = this;
        instantiateNumUpDown();
        System.IO.File.WriteAllText(labelPath, " ");

    }

    public static void setPaths()
    {
        var systemPath = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);

        var path = Path.Combine(systemPath, "TextDynamic.txt");
        var labelPath = Path.Combine(systemPath, "currentLabel.txt");
        var objectPath = Path.Combine(systemPath, "object.txt");

    }

【问题讨论】:

  • 只要把var变成string

标签: c# path


【解决方案1】:

试试这个:

public class Form2
{
    private static string labelPath;
    private static string objectPath;
    private static string path;
    public Form2()
    {
        InitializeComponent();
        setPaths();
        current = this;
        instantiateNumUpDown();
        System.IO.File.WriteAllText(Form2.labelPath, " ");

    }

    public static void setPaths()
    {
        var systemPath = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);

        path = Path.Combine(systemPath, "TextDynamic.txt");
        labelPath = Path.Combine(systemPath, "currentLabel.txt");
        objectPath = Path.Combine(systemPath, "object.txt");

    }    
}

【讨论】:

    【解决方案2】:

    因为你的变量“path”“labelPath”“objectPath”都出自From2的Construction方法,要修复它,你应该这样做:

    public Form2()
    {
        InitializeComponent();
    
        string path = string.empty;
        string labelPath = string.empty;
        string objectPath = string.empty;
    
        setPaths(ref path, ref labelPath, ref objectPath);
    
        current = this;
        instantiateNumUpDown();
        System.IO.File.WriteAllText(labelPath, " ");
    
    }
    
    public static void setPaths(ref string path, ref string labelPath, ref string objectPath)
    {
        var systemPath = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
    
        path = Path.Combine(systemPath, "TextDynamic.txt");
        labelPath = Path.Combine(systemPath, "currentLabel.txt");
        objectPath = Path.Combine(systemPath, "object.txt");
    
    }
    

    【讨论】:

      【解决方案3】:

      您不能这样做,因为 var 本身不是类型,它获取赋值右侧的值的类型。

      相反,您可以将变量类型定义为字符串并在类下声明

      public class A
      {
              private static string systemPath = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
              private string path = Path.Combine(systemPath, "TextDynamic.txt");
              private string labelPath = Path.Combine(systemPath, "currentLabel.txt");
              private string objectPath = Path.Combine(systemPath, "object.txt");
      }
      

      【讨论】:

        猜你喜欢
        • 2011-08-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-13
        • 2016-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多