无法声明静态类型';的变量;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;
}
}
}
}
compilerFolder
变量)。相反,存储一个表示文件路径的字符串。
此外,Path.Combine
返回一个字符串,因此这将修复您的第二个错误,该错误是由于尝试将字符串分配给Path
变量而导致的。
Path.Combine
返回一个string
,而不是Path
对象(Path
是一个静态类,所以无论如何都不能有它的实例)。
更改
public Path compilerFolder;
至
public string compilerFolder;
其他辅助建议:
- 使用属性(或专用字段)而不是公共字段
- 如果字段只与一个方法相关(除非您有外部代码访问它们,否则它们看起来是一个方法),则根本不要使用字段