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

本文关键字:变量 System IO Path 静态类 类型 声明 静态 | 更新日期: 2023-09-27 18:29:51

当我试图编译程序时,会出现以下错误:
无法声明静态类型为"System.IO.Path"的变量
无法将类型"string"隐式转换为"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;
            }
        }
    }
}

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

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

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

Path.Combine返回一个string,而不是Path对象(Path是一个静态类,所以无论如何都不能有它的实例)。

更改

public Path compilerFolder;

public string compilerFolder;

其他辅助建议:

  • 使用属性(或专用字段)而不是公共字段
  • 如果字段只与一个方法相关(除非您有外部代码访问它们,否则它们看起来是一个方法),则根本不要使用字段
相关文章: