2016-12-31 50 views
-2

你好,我正在学习C#。无法在Main()中调用方法?

当试图在实例中调用我的方法时,我没有得到智能选项,我不得不输入它。 。

我试图建立时也有电流两个错误:

1)“‘字符串[]’不包含关于‘LastWriteTime’和没有扩展方法的定义‘LastWriteTime’接受的第一个参数可以找到类型'string []'“。

2)。

任何线索将不胜感激“会员‘MyClass.Move_Modified_Files()’不能与实例引用访问带有类型名称,而不是限定它”!

这里是我的代码:

namespace File_Mover 
{ 
    public class MyClass 
    { 
     public static string src = @"C:\Users\Bold Defiance\Desktop\FolderA"; 
     public static string dst = @"C:\Users\Bold Defiance\Desktop\FolderB"; 
     public static string[] files = System.IO.Directory.GetFiles(src, "*.txt"); 

     public static void Move_Modified_Files() 
     { 
      try 
      { 
       if (files.LastWriteTime.Date == DateTime.Today.Date) 
       { 
        File.Move(src, dst); 
        Console.WriteLine("Modified files in {0} were moved to {1}", src, dst); 
       } 
       else 
       { 
        Console.WriteLine("No new or modified files were created today."); 
       } 
      } 
      catch (Exception e) 
      { 
       Console.WriteLine("The process failed: {0}", e.ToString()); 
      } 
     } 
    } 

    class Program 
    { 
     static void Main(string[] args) 
     { 
      MyClass cls = new MyClass(); 
      cls.Move_Modified_Files(); 
     } 
    } 
} 

回答

1

要解决你的错误:

1)System.IO.Directory.GetFiles返回的文件路径的数组。如果您想检查每个文件的最后写入时间,则可以使用System.IO.File.GetLastWriteTime()将完整路径传递给它。你必须遍历数组来完成这个。

2.)你的方法和成员变量在类中是静态的,不需要。你应该使该方法非静态,然后这个错误/警告将消失。

+0

此外,它的写法是,'File.Move'将尝试在目录上执行操作。如果它不抛出异常,它只会将文件夹本身移动到另一个。 'DirectoryInfo.EnumerateFiles'可能更适合于返回FileInfo对象(直接查询LastWriteTime并访问MoveTo)及其懒惰评估(对于大型目录无论如何) – pinkfloydx33