IT知识库 购物 网址 游戏 小说 歌词 快照 开发 股票 美女 新闻 笑话 | 汉字 软件 日历 阅读 下载 图书馆 编程 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程 CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
站长资讯 .NET新手 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA VisualStudio ASP.NET-MVC .NET控件开发 EntityFramework WinRT-Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动 Html-Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP OracleERP DynamicsCRM K2 BPM 信息安全 企业信息 Android开发 iOS开发 WindowsPhone WindowsMobile 其他手机 敏捷开发 项目管理 软件工程 SQLServer Oracle MySQL NoSQL 其它数据库 Windows7 WindowsServer Linux
  IT知识库 -> .NET新手区 -> 如鹏网学习笔记(四).Net常用类库 -> 正文阅读

[.NET新手区]如鹏网学习笔记(四).Net常用类库

如鹏网学习笔记(四).Net常用类库 .Net常用类库
一、String成员方法(常用)
  1,bool Contains(string str) 判断字符串对象是否包含给定的内容
  2,bool StartsWith(String str):判断字符串对象是否以给定的字符串开始。
  3,bool EndsWith(String str):判断字符串对象是否以给定的字符串结束。
    案例:判断是否是网址:以http://开头、以.com或者.cn结尾。
    案例:判断用户输入的邮件是否是QQ邮箱,用户输入的用户名是否包含“毛ze东”等敏感词
  4,int Length 获取字符串的长度属性
    str.Length
  5,char ch = str[3];
  6,int indexOf(int ch)   //返回指定字符在此字符串中第一次出现的索引
  7,int indexOf(string str)   //返回指定字符串在此字符串中第一次出现的索引
  8,LastIndexOf    //最后一次出现的位置
  9,String Substring(int start)   // 截取字符串,返回从指定位置开始截取后的字符串
  10,String substring(int start,int length)   // 截取字符串,返回从指定位置开始截取指定长度length的字符串
  11,String ToLower()   //把字符串变成小写;
  12,String ToUpper()  // 把字符串变成大写
  13,String Replace(char oldChar,char newChar)   //用新的字符去替换指定的旧的字符;
  14,String Replace(string lodStr,string newStr)  // 用新的字符串去替换指定的旧的字符串
  15,String trim()  // 去除字符串两端的空格,
  16,Trim(params char[] trimChars)  // 去掉两端的给定的字符
  17,TrimEnd和TrimStrat   //去掉开头的和结尾的空格
  18,String是不可变的,因此上面的操作都是生成新的字符串对象,要用返回值去接收新的字符串。
  19,String[] Split()   //重载方法很多,字符串按照分隔符切割。
  案例:把字符串用“,”分割
二、String静态方法
  1,bool IsNullOrEmpty(string value)   // 判断字符串是否为null或者是空字符串
  2,bool Euqals(string a,string b,StringComparison.OrdinallgnoreCase)   //对两个字符串进行不区分大小写比较
  3,string Join(string separator,params string[] value)  // 把一个数组(集合)用分隔符separator连接为一个字符串
三、StringBuilder
  因为字符串的不可变,在字符串进行连接的时候会产生新的字符串对象,造成浪费  
  1,Append();
    StringBuilder sb = new StringBuilder();
    sb.Append(s1);
    sb.Append(s2).Append(s3);//因为Append方法把this对象(当前对象)返回了,所以可以链式编程
    最后使用String s = sb.ToString(),一次性生成拼接结果字符串即可
  2,AppendLine();
    将默认的行终止符追加到当前 System.Text.StringBuilder 对象的末尾。(追加完,回车)
四、可空的int
  int是值类型,不能为null。在C#中可以用int?表示“可空的int”
  注意类型的转换:
    int? i = 5;
    if(i!=null)
    {
      int i1 = (int)i;//需要进行强转
    }
  也可以通过i.HasValue,判断是都为null、i.value获取i的值
  通过IL可知,int?其实被编译器翻译为Nullable<int>类型
五、日期类型
  DateTime类表示时间数据类型。属于结构体,因此是值类型
  DateTime.Now  当前时间,
  DateTime.Today  当前日期
  可以通过Year、Month、Hour的属性得到日期的年、月、小时等部分;
  也可以用构造函数根据给定的时间创建一个对象
六、异常的概念
  异常发生在程序发生的不正常情况下。异常以一个异常类对象的形式抛出,异常类描述异常信息、发生的位置等。
  异常的根类为Exception。异常类一般都继承自Excrption
七、异常的捕捉
  try
  {
    String s = null;
    s.ToString();
  }
  catch(NullReferenceException ex)
  {
    Console.WriteLine("为空"+ex.Message);
  }
  ex就是发生异常的异常类对象,变量名只要不冲突就任意
  在异常处理中,一旦try里面有问题了。放弃try代码块中之后的代码,直接跳到catch里面执行。
  如果try代码后还有代码,则处理完catch后还会继续执行
八、多个异常的处理
  try
  {
    int a = 10;
    int b = 0;
    Console.WriteLine(a/b);
    int[] arr = {1,2,3};
    Console.WriteLine(arr[3]);
  }
  catch(DivideByZeroException ae)
  {
    Console.WriteLine("除数不能为0");
  }
  catch(IndexOutOfRangeException ae)
  {
    Console.WriteLine("数组越界异常");
  }
  可以catch住父类异常,这样就可以抓住所有子类异常了,但是强烈不建议这样做,不要没理由的catch异常
九、不要吃异常
  catch(Exception ex)
  {
    //空代码
  }
  不要只是把异常catch住什么都不做或者只是打印一下,这不是正常的“异常处理”
  不知道怎么处理就不要catch,出错比“把错误藏起来”好。这样以为“不会出错了”,其实是把异常“吃掉了”,会让程序陷入混乱状态
  要合理的处理异常
十、finally
  try
  {
    //有可能有问题的代码
  }
  catch(异常类型 异常变量)
  {
    //处理方式
  }
  finally
  {
    //无论是否出现异常,都要执行的代码
  }
  finally中一般进行资源的回收等。
十一、File文件类
  File是静态类(无法被New),其主要的静态方法有:
  1,void Delete(string path)   删除文件
  2,bool Exists(string path)    判断文件是否存在
  3,string[] ReadAllLines(string path)   将文本文件中的内容读取到string数组中
  4,string ReadAllText(string path)    将文本文件读取为一个字符串
  5,void WriteAllLines(string path,string[] contents)   将string[]写入到文件中
  6,void WriteAllText(string path,string contents)   将字符串contents写入到文件path中
  7,AppendAllText   向文件中附加内容
  8,Copy  复制文件
  9,Move  移动文件
十二、Directory文件夹类,为static类
  1,CreateDirectory(string path) 创建文件夹全路径
  2,void Delete(string path,bool recursive) 
    删除文件夹path,recursive表示是否也删除子文件及子文件夹。
    如果文件夹不为空,recursive=false,则抛异常
    示例代码:Directory.Delete(@"全路径", true);
  3,boolExists(string path)   判断文件夹是否存在
  4,Directory.EnumerateFiles();  返回指定路径中的文件名的可枚举集合。
  5, Directory.EnumerateDirectories();  返回指定路径中与搜索模式匹配的目录名称的可枚举集合。
十三、流 Stream
  1,File类提供了读写文本文件的方法,但是对于大文件不能用它提供的方法,太占内存,需要一种“流式处理”的方法
  2,.Net将IO操作(文件、网络等)简化成流模型Stream,是抽象类,
    网络、文件、加密稍等都是不同的子类,
    最常用的子类是FileStream、MemoryStream等
  3,使用Stream的时候虽然可以:
    FileStream fs = new FileStream();
    但是,Stream fs = new FileStream();更好!
    在使用的变量类型提供的操作能满足的前提下,尽可能的用父类、接口声明变量,(体现了多态的思想),
  4,FileStream写入文件
    FileStream fs = new FileStream(@"D:\1.txt", FileMode.Create);//创建一个文本文件
    byte[] bytes = Encoding.Default.GetBytes("你好如鹏网");//将“你好如鹏网”进行编码成byte数组对象
    fs.Write(bytes, 0, bytes.Length);//操作fs对象进行写入
    fs.Close();//关闭流
    Stream写入的单位是byte(字节),char转换为byte时候,一个英文char转换为一个byte(对应的ASCII码),一个中文char转换为两个byte
    采用Default、UTF8、UTF32得到的字符串的byte[]长度不一样,因此说明不同类型编码在计算机中存储的不一样。
    用什么编码写入就用什么编码读取,否则会有乱码的问题。
    注意:不要往C盘写,因为Win7、Win8默认普通程序没有权限读写C盘
  5,FileStream读取
    1,byte[] bytes = new byte[4];
      每次读取多个字节数据,不能一次把一个文件读取出来,否则太占用内存,因为数组是占用内存的。
      这个叫做“缓冲区”,设的太小CPU和硬盘会很忙,设的太大内存会很“撑”
    2,while((len = fs.Read(bytes,0,bytes.Length))>0) 继续从流中读取最多bytes长度那么多字节的数据拷贝到bytes数组中。
      下次read是从上次最后一个read最后的位置之后开始读,一次次的读取read方法返回这次一共读了多少字节(比如遇到最后一次读取可能读不满),
      一旦返回的=0了,就说明读完了。
      对于没被赋值初始值就是0,因为没被填满的数组位置是0.
    3,String s = Encoding.Default.GetString(bytes,0,len); 把byte[]转换成对应string,考虑bytes没有充分利用的情况
    4,字节流不适合读取内容中包含文本文档,容易造成数据错乱(byte[]中含有一半的汉字)。
      要用后面讲的StreamReader
十四、资源的关闭
  1,在上面的程序有缺陷,如果write的时候发生异常,fs就不会close,其他程序就无法写入这个文件了,也会占用资源
  2,资源要使用完毕才能close,一旦close之后再操作就会出错
  3,正确是做法是放在using(){}里面
十五、using
  1,可以同时声明多个资源
    using(MyFile f1 = new MyFile())
    using(MyFile f2 = new MyFile())
    {
    }
  2,using其实就是编译器简化的try。。finally操作,
  3,using只是try。。finally,如果需要catch,只管catch就是了
  4,注意:实现了IDisposable接口的对象用完了,都要Dispose
十六、复制文件
  1,使用两个FileStream配合完成文件拷贝:
    从源文件的FileStream中读取一部分内容,再写入到目标文件的FileStream中。
    解释代码:
    1,while((len = inStream.Read(bytes,0,bytes.Length))>0)
      把读取并且返回读取的长度给len,然后判断len的值,综合为了一句话。
    2,outStream.Write(bytes,0,len);
      每次write都会从上次write的最后位置接着写入。将byte[] 数组b写入outStream中,off代码距离当前写入位置的偏移量,一般写0,len代表写入多长。
      缓冲区先设置50,,修改为1M,体会速度的变化。使用StopWatch类进行代码计时。
  2,封装一个Copy方法
    封装一个函数void copy(Stream inStream,Stream outStream,int bufferSize)用来把inStream拷贝到outStream中,
    缓冲区大小为bufferSize。要检查参数合法性(是否为null、bufferSize是否在合理范围)
  3,.Net 4.0之后Stream类中提供了一个CopyTo方法
  4,Reader、Writer(文本内容)
    直接用Stream进行文本文件的读写会比较麻烦,因为需要考虑文件的编码、中文字符等的问题
    StreamReader、StreamWriter是用来读写字符流(characterstream)的类,会帮着自动处理麻烦的问题
十七、编码
  1,由于历史原因,汉字等如何在计算机中以字节存储存在着多种标准,最常见的是GB2312(国家标准、表示汉字)、
    GBK(GB2312的扩展,还能表示繁体字等)、UTF-8(国际标准)、UTF-16等
  2,ANSI表示采用当前操作系统的默认编码,如果是中文Windows,默认就是GBK
  3,用什么编码保存就用什么编码读取,就不会乱码
  4,如何用其他编码保存?由StreamWriter构造函数决定:new StreamWriter(outStream, Encoding.UTF8
    怎么初步判断用了什么编码?记事本打开另存为,可以看到
  5,读取的编码由StreamReader构造函数决定
十八、泛型容器List<T>
  1,数组长度是固定的,List<T>可以动态增删内容。
    List<T>是泛型的,可以在声明的时候指定放什么类型的数据。
  2,如何增加
    List<int> list = new List<int>();
    list.Add(1);
    list.Add(2);
    list.AddRange(new int[]{1,2,3,4,5});
    list.AddRange(list2);//添加另外一个list
  3,如何遍历
    int[] nums = list.ToArray();//List泛型集合可以转换为数组
    List<string> listStr = new List<string>();
    string[] str = listStr.ToArray();
十九、泛型字典Dictionary<Key,Value>
  1,如何增加
    Dictionary<string,string> dict = new Dictionary<string,string>();
    dict.Add("zs","张三");
    dict.Add("ls","李四");
    dict.Add("ww","王五");
  2,如何修改
    dict["ls"] = "小赵";
    String s = dict["ww"];
  3,判断是否包含
    dict.ContainsKey();
二十、foreach
  1,除了使用for循环可以进行遍历外,实现了IEumerable接口的对象还可以使用foreach进行遍历
    string[] strs = {"asdasd","qweqweq","gdfg"};
    foreach(string s in strs)
    {
      Console.WriteLine(s);
    }
  2,List<T>、Dictionary<K,V>等一切实现了IEnumerable接口的对象都可以进行遍历
    Dictionary<string,object> dict = new Dictionary<string,object>();
    dict["rupeng"] = 888;
    dict["sina"] = "hehe";
    dict["baidu"] = true;
    foreach(KeyValuePair<string,object> kv in dict)
    {
      Console.WriteLine(kv.Key+"="+kv.Value);
    }
上一篇文章           查看所有文章
加:2017-10-28 23:21:34  更:2017-10-28 23:21:36 
 
  .NET新手区 最新文章
将ZIP文件添加到程序集资源文件然后在运行时
Web服务的调用
.NET创建WebService服务简单的例子
多线程编程学习笔记——任务并行库(三)
序列化和反序列化
Spring学习之路
cs代码实现控件移动TranslateTransform
Asp.net基础知识
ACdream原创群赛(11)の风神日华神专场C.神奇
SQL 存储和触发器
技术频道: 站长资讯 .NET新手区 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA Visual Studio ASP.NET MVC .NET控件开发 Entity Framework WinRT/Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动设计 Html/Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP Oracle ERP Dynamics CRM K2 BPM 信息安全 企业信息化其他 Android开发 iOS开发 Windows Phone Windows Mobile 其他手机开发 敏捷开发 项目与团队管理 软件工程其他 SQL Server Oracle MySQL NoSQL 其它数据库 Windows 7 Windows Server Linux
脚本语言: vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程
网站开发: CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 新闻资讯 小游戏 Chinese Culture 股票 三丰软件 开发 中国文化 网文精选 阅读网 看图 日历 万年历 2018年10日历
2018-10-24 3:19:16
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT知识库