当前位置:  开发笔记 > 编程语言 > 正文

你可以用不同的方式写这个

如何解决《你可以用不同的方式写这个》经验,为你挑选了1个好方法。

.NET 3.5/C#3.0中有一些很酷且令人兴奋的功能,这些功能带来了一些非常有趣的方法来编写完全相同的代码行.

使用上面提到的工具集(以及扩展的.NET 2.0东西),下面的代码片段可以合理地重写的不同方式有哪些?

        string uploadDirectory = "c:\\some\\path\\";
        if (Directory.Exists(uploadDirectory)) {
            string[] files = Directory.GetFiles(uploadDirectory);
            foreach (string filename in files) {
                if (File.GetLastWriteTime(filename).AddHours(12) < DateTime.Now) {
                    File.Delete(filename);
                }
            }
        }

Mark Bracket.. 9

LAMBDA:

if (Directory.Exists(uploadDirectory)) 
  Directory.GetFiles(uploadDirectory)
    .Where(f => File.GetLastWriteTime(file) < DateTime.Now.AddHours(-12))
    .Each(f => File.Delete(f));

编辑:第二个想法,您可以通过使用DirectoryInfo和FileInfo而不是静态File方法来避免每个文件访问的安全性查找:

var di = new DirectoryInfo(uploadDirectory);
if (di.Exists()) {
   di.GetFiles()
     .Where(f => f.LastWriteTime < DateTime.Now.AddHours(-12))
     .Each(f=> f.Delete());
}

对于那些错过自己的每个方法:

void Each(this IEnumerable e, Action action) {
  foreach (T t in e) {
    action(t);
  }
}

为了让它真的变得疯狂,并且适合C#3.0主题,让我们抛出一个匿名类型:

di.GetFiles().Select(f => new() {
   Delete = f.LastWriteTime < DateTime.Now.AddHours(-12) ? f.Delete : () => { }
}).Delete();

但这没有任何意义.;)



1> Mark Bracket..:

LAMBDA:

if (Directory.Exists(uploadDirectory)) 
  Directory.GetFiles(uploadDirectory)
    .Where(f => File.GetLastWriteTime(file) < DateTime.Now.AddHours(-12))
    .Each(f => File.Delete(f));

编辑:第二个想法,您可以通过使用DirectoryInfo和FileInfo而不是静态File方法来避免每个文件访问的安全性查找:

var di = new DirectoryInfo(uploadDirectory);
if (di.Exists()) {
   di.GetFiles()
     .Where(f => f.LastWriteTime < DateTime.Now.AddHours(-12))
     .Each(f=> f.Delete());
}

对于那些错过自己的每个方法:

void Each(this IEnumerable e, Action action) {
  foreach (T t in e) {
    action(t);
  }
}

为了让它真的变得疯狂,并且适合C#3.0主题,让我们抛出一个匿名类型:

di.GetFiles().Select(f => new() {
   Delete = f.LastWriteTime < DateTime.Now.AddHours(-12) ? f.Delete : () => { }
}).Delete();

但这没有任何意义.;)

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有