.NET常用类库

514 阅读7分钟

一、String

    1、特性:不可变性——由于字符串是不可变的的,每次修改字符串,都是创建了一个单独字符串副本(拷贝了一个字符串副本),之所以发生改变只是因为指向了一块新的地址; 字符串池(只针对字符串常量)——当一个程序中有多个相同的字符串常量时,多个变量指向的是内存中同一块字符串!这个特性叫字符串池。之所以字符串,不会造成程序混乱,是因为字符串的不可变性。

     2、常用成员方法和属性:

         2.1 str.Contains(String str) 判断字符串中是否包含,指定字符串,返回bool;

         2.2 str.StartsWith/EndWith(String str) 判断字符串对象是否以指定字符串开始/结尾;

         2.3 str.Length 获取字符串长度; 

         2.4 str.IndexOf(String str) 获取指定字符/字符串在对象字符串中第一次出现的位置。

         2.5 str.LastIndexOf(String str) 获取指定字符/字符串在对象字符串中最后一次出现的位置。 

         2.6 str.SubString(int start) SubString(int strat, int length) 从指定位置,截取字符串。

         2.7 str.ToLower() 将串转换成小写,返回一个新的全小写的字符串。 

         2.8 str.ToUpper() 将串转换成大写,返回一个新的全大写的字符串。 

         2.9 str. Replace(string oldStr,string newStr) 用新的字符串,替换对象字符串中老的字符串部分。 

        2.10 str.Trim() 去掉对象字符串两端的空格, str.TrimStart() 去掉对象字符串开头的空格 str.TrimEnd() 去掉对象字符串结尾的空格  

        2.11 str.Split() 把对象字符串,按照指定字符分割成一个字符串数组。 Split() 的重载同样很多, 例如 Split(new char[]{'|'}, StringSplitOption.RemoveEmptyEntries)// 删除空数据

       3、静态方法:

        3.1 string.IsNullOrEmpty(string str)  判断某字符串是否为null,或者为空字符串。                3.2.string.Equals(string,string,StringComparison.OrdianlIgnore) 忽略大小写比较两个字符串是否相同。 3.Join(string,string[]) 把一个数组按照指定字符串,拼接成一个字符串。


二、计时器控件Timer

   1、常用属性和事件

       1.1 Interval 属性表示 Timer控件的时间间隔, 类型是int,默认是毫秒。 

       1.2 Enabled 属性 表示Timer控件是否激活。 如果激活的话,一进入Timer的Tick事件就开始执行。所以默认是false。 

       1.3. Start() 方法 开始执行 

       1.4. Stop() 方法 停止执行 

       1.5. Tick 事件 表示Timer控件将要执行的代码。

  2、操作:Lambda表达式调用Timer        

//添加一个Timer控件
Timer timer = new Timer();
//设置好必要的属性后
timer.Interval = 100;//使用Lambda表达式timer.Tick += (sender,e) =>{     if (巴拉巴拉巴拉)        {                             timer.Stop();        }};timer.Start();

    

三、StringBuilder

      1、特点:string对象在进行字符串拼接时,因为字符串的不可变性,string对象会每次拼接,都会复制一个副本出来进行运算,而本身的串仍然留在内存中,大量的临时片段会造成不可忽视的性能损耗。所以在进行大量的字符串拼接时建议使用StringBuilder

       2、常用操作: 

string s1 = "33";string s2 = "44";string s3 = "55";  //需求是把  s1 s2 s3拼接在一起。这是一种典型的字符串拼接。//使用StringBuilder ,不会产生无用的临时字符串。StringBuilder sb =new StringBuilder();//拼接方式一sb.Append(s1);sb.Append(s2);sb.Append(s3);//拼接方式二      //因为Append()方法会返回一个this,也就是对象本身。所以可以使用这种方式。//链式编程  Jquery中常用这种方式sb.Append(s1).Append(s2).Append(s3); //最后把sb.ToString()一下就好了。

四、DateTime dt

       1、简述:是.NET中的时间类型,可以通过DateTime完成诸如获取当前的系统时间等操作。 DateTime在.NET中是一个结构体,而并不是一个类。

       2、常用方法和成员:

         2.1 dt.Now 获取当前系统时间。

         2.2 dt.Today 获取当前今日日期。

         2.3  获取 年 月 日 时 分 秒: dt.Now.Year 获取年 dt.Now.Hour 获取小时 dt.Now. Month 获取月 dt.Now. Minute 获取分钟 dt.Now. Day 获取日 dt.Now. Second 获取秒 

        2.4 dt.Now.DayOfWeek、dt.Now.DayOfYear 获取当前日期是星期几 以及获取当前日期是一年中的第几天 

        2.5 dt.TryParse() 判断是否是时间类型,参数中有一个out可以输出一个DateTime对象。       

        2.6 dt.Now.AddDays()、dt.Now.AddHours() 在当前时间基础上加几天 返回一个DateTime 在当前日期基础上加几个小时 返回一个DateTime 

        2.7 dt.Now.Subtract(DateTime.Now) 比较两个时间的 时间差 返回一个TimeSpan

五、异常和异常处理Exception      

try{    //可能发生异常的代码    //后续代码     }catch(Exception e){
    //e就是发生异常的异常类对象,可以任意取名。不是必须叫e的。
    //通过 e.Message获取异常信息}finally{
     //无论如何都会执行}

//一块try中的代码只能抛出一个异常。//可以只有 try catch//也可以只有try  finally

六、IO操作

   1、常用类

   1.1 FileStream类 文件流类,负责大文件的拷贝,读写。 

//---------------------------------------------------------------读操作
//1.创建文件流FileStream fsRead =new FileStream("1.txt",FileMode.Open);//2.创建缓冲区,正常情况下,是不会直接等于文件大小的。这里只有读,所以就这么干了。byte[] bytes =new byte[fsRead.Length];//3.开始读取, 返回值是读取到的长度。int r =fsRead.Read(bytes,0,bytes.Lenght);//4.关闭释放流fsRead.Close();fsRead.Dispose(); 

//---------------------------------------------------------------写操作
//1.创建写入的文件流FileStream fsWrite fsWrite =new FileStream(@"xxx",FileMode.OpenOrCreate);//2.创建缓冲区String msg ="HelloWorld";byte[] bytes =Enconding.UTF8.GetBytes(msg);//3.开始写入fsWrite.Write(bytes,0,bytes.Length);//4.关闭fsWrite.Close();fsWrite.Dispose();

  1.2 Path类 Path类中方法,基本都是对字符串(文件名)的操作,与实际文件没多大关系。 

ChangeExtension(path,".jpg")  //改变文件后缀名!Combine(s1,s2)  //将两个路径连起来//获取文件名的几个方法 1)Path.GetFileName(s1);   //获取路径中的文件名2)Path.GetFileNameWithoutExtension(s1);   //获取文件名,不包括后缀名!3)Path.GetDirectoryName(s1)//获取路径中的目录不包括文件名。4)Path.GetExtension(s1);  //只获取扩展名GetFullPath("")   //获取完整路径,根据相对路径获得绝对路径。//临时目录 1)GetTempPath()     //获取当前用户的临时目录2)GetTempFileName()    //获取一个随机的文件名,并在临时目录下创建这个文件。3)GetRandomFileName()   //仅获取一个随机文件名。

  1.3 File类 File类可以进行一些对小文件拷贝、剪切操作,还能读一些文档文件。      

//拷贝File.Copy("Source"," Target",true);//判断是否存在 File.Exists(@"Source") ;//剪切 File.Move("Source","Targe");//创建 File.Create("path");//删除 File.Delete("path"); //删除,若没有,不报错!//读操作 1)File.ReadAllLines("path",Encoding.Default);   //返回一个string[]2)File.ReadAllTest("path",Encoding.Default);    //string3)File.ReadAllBytes("path");//写操作 1)File.WriteAllLines("path",new string[4],Encoding.Default);//按行写入一个文件中。2)File.WriteAllText("path","string");3)File.WriteAllBytes("path",new byte[4]);4)File.AppendAllText();   //将string追加到文件中。//返回FileStream的快捷方式 1)File.Open(string,FileMode);   //返回一个FileStream2)File.OpenRead(string,FileMode);  //返回一个只读的 FileStream3)File.OpenWrite(string,FileMode);  //返回一个只写的 FileStream

  1.4 Dirctory 目录操作,创建文件、删除目录,获取目录下文件名等等。

//创建目录Directory.CreateDirectory(@"目录");//判断某个目录是否存在某文件string path =@"路径";if(Directory.Exists(path)){}//删除目录1)Directory.Delete(path); //删除空目录  ,目录下没有文件了。2)Directory.Delete(path,true); //不管空不空,都删!3)如果没有目录就会报异常,最好用if(Directory.Exists(path))判断一下。//移动文件/重命名目录 Directory.Move(@"c:\a",@"c:\abc"); //可以把文件夹当作对象来使用DirectoryInfo dirInfo = new DirectoryInfo(@"path"); 
------------------------------------------------------------------------//获取目录下的直接子目录String[] dirs =Direcotory.GetDirectories(@"目录");//获取目录下的直接子文件String[] files =Directory.GetFiles(@"目录");

问题:使用String[] dirs =Direcotory.GetDirectories(@"目录");是必须要等获取了整个string之后,才能遍历这个集合。如果希望,读到一条处理一条。建议使用Directory.EnumerateFile()1)EnumerateFile返回的是一个实现了IEnumerable接口的集合。实际上使用了迭代器模式。2)SearchOption.ALLDirctories参数,会让.EnumerateFile()遍历所有子目录下的文件。----------------------------------------------------------------