2014-11-10 2 views
0

Когда я пытаюсь скомпилировать свою программу, он выходит с этими ошибками:
Не можете объявить переменную статического типа «System.IO.Path»
Не может неявно преобразовать тип «строка» в «» 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; 
      } 
     } 
    } 
} 
+5

[Путь] (http://msdn.microsoft.com/en-us/library/system.io.path (v = vs.110) .aspx) является статическим классом. – Habib

+0

Измените тип 'compilerFolder' на строку. Это то, что «Path.Combine» вернется. – Habib

+0

Возможно, вы использовали [DirectoryInfo] (http://msdn.microsoft.com/en-us/library/system.io.directoryinfo.aspx) или [FileInfo] (http://msdn.microsoft.com/ru -us/library/system.io.fileinfo.aspx). – poke

ответ

0

Path.Combine возвращает string, а не Path объект (и Path статический класс, так что вы не можете иметь экземпляр этого в любом случае).

изменение

public Path compilerFolder; 

в

public string compilerFolder; 

Другие вспомогательные предложения:

  • Используйте свойства (или частные поля) вместо общественных полей
  • Не используйте поля в все, если они относятся только к одному методу (который, по-видимому, e, если у вас нет доступа к внешнему коду).
+1

ну я чувствую себя глупо XD. – DarkWolfModding

3

Path - статический класс. У вас не может быть экземпляра его (ваша переменная compilerFolder). Вместо этого сохраните строку, представляющую путь к файлу.

Кроме того, Path.Combine возвращает строку, поэтому это исправит вашу вторую ошибку, из-за которой вы пытались присвоить строку переменной Path.

Смежные вопросы