.NET Framework
NET Framework是C#在Windows上的一个重要的组件,它具有两个主要组件:公共语言运行库(CLR)、.NET Framework的类库(FCL)。CLR是其基础,代码管理是CLR的基本原则,基于CLR的语言编译器开发的代码成为托管代码,否则成为非托管代码。这些在前期C#的学习中已经了解到了。
现在主要说的是其的垃圾回收机制,新的对象的创建的时候,在内存中存储的是其字段的信息还有其引用的信息,官方的说法就是同步块索引和类型对象指针,方法并没有在对象中存储,它是存储在类中的。代就是CLR提供的垃圾回收的一种机制。CLR支持三代的存储,简单的说一下垃圾回收的过程:
所有的对象刚开始的时候都是在第0代的,当某个对象来后,发现第一代已经存储满了,则开始进行垃圾回收,检索把不用的丢弃掉,之后把用的放入第1代中,触发垃圾回收的那个对象放入第0代,之后继续进行,当第2代满时,同理进行操作,当所有的代都放满,则检索有没有不用的,有则继续存储,没有则整个程序会卡掉,因为没有多余的空间存储信息。
文件的I/O操作,主要是Directory、DirectoryInfo、File、FileInfo类中相关的操作,晓得增删改查目录和文件的方法。
使用递归的方法遍历目录下所有的文件夹和文件
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);
}
}
或者使用DirectoryInfo、FileInfo类进行操作。目录的Move操作就是对其进行了重命名,以前的不存在,而文件的Moveto操作则是移动位置+重命名,以前的文件仍然存在。
二、多线程可以是多个程序同时进行,使用线程,需引入命名空间System.Threading,利用 多线程实现异步调用:
Void SendMessage(object 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类实现生产/消费者模式
网路编程:实现的聊天工具