BCL

- System.IO.FileInfo
- System.IO.DirectoryInfo MSDN
- System.IO.Directory
- System.IO.File

View Code 
 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using System.IO;
 
 namespace ConsoleApplication3
 {
     class Program
     {
         static void Main(string[] args)
         {
             //FileInfo
             //DirectoryInfo
             //File
             //Director
             var users = new List<string>(); //创建循环目录
             users.Add("Shawn");
             users.Add("Tutu");
             users.Add("Baba");
             foreach (var user in users)
             {
                 for (var i = 0; i < 5; i++)
                 {
                     Directory.CreateDirectory(string.Format("Homework/{0}/week_{1}", user, i));
                 }
             }
 
             if (!Directory.Exists("Test"))  //Directory例子:static方法,可以直接叫,path为当前project位置
             {
                 Directory.CreateDirectory("Test");
             }
             File.Delete("test.txt");
 
 
             var directroyInfo = new DirectoryInfo("c:\\");  //DirectoryInfo例子:需要object承载,需要写path地址
             Console.WriteLine("File:");
             foreach (FileInfo info in directroyInfo.GetFiles()) //Returns a file list from the current directory
             {
                 Console.WriteLine("{0} - {1}", info.Name, info.Length);
             }
             Console.WriteLine("\nSub Directories:");
             foreach (DirectoryInfo info in directroyInfo.GetDirectories())
             {
                 Console.WriteLine("{0}", info.Name);
             }
             Console.ReadKey();
         }
     }
 }

- Dictionary
- HashSet
- Queue
- Stack

HashSet collection:只能存储给定type的不重复的值

用法:我想控制没有重复的数据或者找出重复的数据

主要应用在判断是否值已经被add进过

   这样也可以  

或者反向操作,找出所有duplicate的值,只要变为if (!set.Add(item))就可以

 Queue: First in first out collection

用法:比如我想向外输出一组数据,先进的先出,这样每Dequeue()一个就从collection里移出一个。Enqueue()相当于add到最后,Dequeue()相当于remove第一个,然后返回这个type(即继续持有这个被移除的object)

ops = new Queue<IOperation>();这句,ops是reference object,它指向的是新new出来的Queue<IOperation>内存,而_ops也是指的同一个内存空间。

output是这样的

因为ops到第四个coolection item的时候,dequeue移出这个object后,持有这个object,执行内部的enqueue,把其又加回到queue队尾

while(ops.Count > 0)
{
    ops.Dequeue().Exec();
}

//相当于

while(ops.Count > 0)
{
    Ioperation op = ops.Dequeue();
    op.Exec();
}

 

Stack: 先进后出

上面的例子代码不变只是把所有是Queue类型的换成是Stack类型:Statck<Ioperation>

结果成

 

 Queue VS Stack

 

posted @ 2013-06-16 11:14  若愚Shawn  阅读(384)  评论(0编辑  收藏  举报