.NET  Framework

NET  FrameworkC#Windows上的一个重要的组件,它具有两个主要组件:公共语言运行库(CLR)、.NET  Framework的类库(FCL)。CLR是其基础,代码管理是CLR的基本原则,基于CLR的语言编译器开发的代码成为托管代码,否则成为非托管代码。这些在前期C#的学习中已经了解到了。

现在主要说的是其的垃圾回收机制,新的对象的创建的时候,在内存中存储的是其字段的信息还有其引用的信息,官方的说法就是同步块索引和类型对象指针,方法并没有在对象中存储,它是存储在类中的。代就是CLR提供的垃圾回收的一种机制。CLR支持三代的存储,简单的说一下垃圾回收的过程

所有的对象刚开始的时候都是在第0代的,当某个对象来后,发现第一代已经存储满了,则开始进行垃圾回收,检索把不用的丢弃掉,之后把用的放入第1代中,触发垃圾回收的那个对象放入第0代,之后继续进行,当第2代满时,同理进行操作,当所有的代都放满,则检索有没有不用的,有则继续存储,没有则整个程序会卡掉,因为没有多余的空间存储信息。

文件的I/O操作,主要是DirectoryDirectoryInfoFileFileInfo类中相关的操作,晓得增删改查目录和文件的方法。

使用递归的方法遍历目录下所有的文件夹和文件

  public  void All(string path)

        {

            foreach (string dir in Directory.GetDirectories(path))

            {

                Console.WriteLine(dir);

                All(dir);

            }

            foreach (string file in Directory.GetFiles(path))

            {

                Console.WriteLine(file);

            }

   }

或者使用DirectoryInfoFileInfo类进行操作。目录的Move操作就是对其进行了重命名,以前的不存在,而文件的Moveto操作则是移动位置+重命名,以前的文件仍然存在。

二、多线程可以是多个程序同时进行,使用线程,需引入命名空间System.Threading,利用  多线程实现异步调用

Void SendMessageobject  mess

{}

Void ReceiveMessage()

{}

//使用带参的函数时,参数的类型必须为object类型

  Thread th1 = new Thread(SendMessage);  

             Thread th2 = new Thread(ReceiveMessage);

             th1.Start("sdfdsf");

   th2.Start();

使用委托也可以实现异步调用方法相同,只是SendMessage方法的参 数类型不必是object

    //定义委托

delegate void Send(string message);

    delegate void Receive();

             Send send = new Send(SendMessage);

//带参的方法需要在此传入参数的值

             IAsyncResult sendresult = send.BeginInvoke("asadadsad", null, null);

             while (sendresult.IsCompleted)

              {

               send.EndInvoke(sendresult);

}

   Receive receive = new Receive(ReceiveMessage);

             IAsyncResult reresult = receive.BeginInvoke(null, null);

             while (reresult.IsCompleted)

             {

               receive.EndInvoke(reresult);

}

使用Lock来实现同步控制

Monitor类实现生产/消费者模式

网路编程:实现的聊天工具