无法声明静态类型的变量'System.IO.Path'

时间:2014-11-10 19:49:14

标签: c#

当我尝试编译我的程序时,会出现这些错误:
无法声明静态类型的变量' System.IO.Path'
无法隐式转换类型'字符串'到' System.IO.Path'

我有这些名称的组件

timer = timer1
openfolderbrowserdialog = inDirectoryDialog
openFileBrowserDialog = inFileDialog
checkbox1 = tempCompileCB
checkbox2 = finalCompileCB
textBox1 = inputDirectoryBox
textBox2 = inputFileBox

我不知道为什么它会给我这个错误而且只是程序的一部分,它会给出错误。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

namespace papyrusQuickCompile
{
    public partial class Form1 : Form
    {
        public string inDirectory;
        public string inFileName;
        public string inFileNameNoExtention;
        public Path compilerFolder;

        public Form1()
        {  
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            timer1.Interval = 1 * 1000;
            timer1.Start();

        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            compilerFolder = Path.Combine((AppDomain.CurrentDomain.BaseDirectory + ("compiler")));
            inDirectory = inDirectoryDialog.SelectedPath;
            inFileName = inFileDialog.SafeFileName;
            inFileNameNoExtention = Path.GetFileNameWithoutExtension(inFileDialog.SafeFileName);

            inputDirectoryBox.Text = inDirectory.ToString();
            inputFileBox.Text = inFileName.ToString();

            //temp compile checkbox
            if (tempCompileCB.Checked)
            {
                finalCompileCB.Checked = false;
                finalCompileCB.Enabled = false;
                finalCompileCB.Hide();
            }
             else if (!tempCompileCB.Checked)
            {
                finalCompileCB.Show();
                finalCompileCB.Enabled = true;
            }
            //final Compile Checkbox
            if (finalCompileCB.Checked)
            {
                tempCompileCB.Checked = false;
                tempCompileCB.Enabled = false;
                tempCompileCB.Hide();
            }
            else if (!finalCompileCB.Checked)
            {
                tempCompileCB.Show();
                tempCompileCB.Enabled = true;
            }
        }
    }
}

2 个答案:

答案 0 :(得分:3)

Path是一个静态类。你不能拥有它的实例(你的compilerFolder变量)。而是存储表示文件路径的字符串。

此外,Path.Combine会返回一个字符串,因此这将修复您因尝试将字符串分配给Path变量而导致的第二个错误。

答案 1 :(得分:0)

Path.Combine会返回string,而不是Path对象(Path是一个静态类,因此无论如何都无法拥有它的实例)

变化

public Path compilerFolder;

public string compilerFolder;

其他辅助建议:

  • 使用属性(或私有字段)代替公共字段
  • 根本不使用字段,只要它们只与一种方法相关(除非您有外部代码访问它们,否则它们似乎是相同的。)