zoukankan      html  css  js  c++  java
  • C#基础(1)

            摘要:学习c#已经有一段历程了,回顾之前所打过的代码以及笔记,做些常用的总结,希望以后工作中如果用到,方便查找。当然,个人首要目的是这样,加深印象的同时,可以练习一下打字速度。希望也 坚持。当然,如果对其他人能带来一点点帮助的话,那更好啦。

          

    本文涉及内容:

             1、常用对字符串操作         2、集合           3、文件操作

    1、常用对字符串操作:

    a、字符串截取(Substring):

    string str = "我爱中华人民共和国";
    str = str.Substring(2, 4);          //参数1:开始截取的索引(从0开始)  参数2:截取的长度  

    b、字符串以什么开头,以什么结尾:

     str.StartsWith("");           str.EndsWith("");          //返回true 或者false

    c、字符串分割:比较常用,对字符串进行分割,常用于操作把一个字符串分成一个字符串数组,根据字符串的特点,选取需要的部分。

       string serverData = "ok:操作成功";
       string[] data = serverData.Split(':');    
    //  string[] data = serverData.Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries);           //这种方式可以在char数组中多添加需要截取掉的字符串
        for (int i = 0; i < data.Length; i++)
        {  Console.WriteLine(data[i]);  }         //结果为: ok   和  操作成功

    d、比较两个字符串是否一致并忽略大小写(Equals:参数2可以选择多种比较方式,常用:比较两个object

    string str1=abc;   string str2 = abC;
    bool b = str1.Equals(str2, StringComparison.OrdinalIgnoreCase);   //结果为:true

    e、字符串数组插入操作:Join

     string[] str = { "张三", "李四", "王五"};
     string str2 = string.Join("|", str);             //输出结果为:张三|李四|王五  插入到每个数组元素的中间

    小结:字符串还有很多操作,使用频率比较高的就上面这些,当然,c#一些用方都可以点出来然后看文字说明去使用

    2:集合

    集合是一个很常用的东西 。常用的集合有:键值对集合,泛型集合

    ArrayList(集合):可添加数据

    Hashtable(键值对集合):键值可以为任何形式的数据类型

    Dictionary键值对集合(常用):

    Dictionary<int, string> dic = new Dictionary<int, string>();    //涉及到键必须为int类型,值必须为string类型
    dic.Add(1, "张三");    //添加数据
    dic.Remove(1);   //传进来的是键标
    dic.Clear();    //清空集合

    List泛型集合(常用):

    List <int> list= new List<int>();    //声明
    list.Add(1); //添加数据
    list.AddRange(new int[] { 3,4,5,6,7,8,9});  //添加集合
    list.RemoveAt(2);   //索引下标从0开始
    list.RemoveRange(2, 4);    //从索引2开始,移除4个元素
    list.Clear();//清空集合

    集合比较常用,用法也相对比较简单。常用的有很多,比如:Contains(是否包含) FirstOrDefault:第一个元素,.ToArray :转换为数组 等  可以list然后点出来,再根据说明

    3、文件操作

    摘要:文件操作是一些项目中必不可少的,对一些上传图片的路径操作,对写入的一些文档,日志文件进行保存之类

    a:专门操作路径的path类 :(静态类)

    using System.IO;
    string str = @"C:Program Files (x86)IISMicrosoft Web Deploy V3esC#.txt";
    Path.GetFileName(str);  //获取文件名
    Path.GetFileNameWithoutExtension(str);    //没有扩展名的文件名
    Path.GetExtension(str);   //获取文件扩展名
    Path.GetFullPath(str);  //获取文件绝对路径
    Path.Combine(@"c:ac", @"f.avi");  //把两个路径融合
    Path.GetDirectoryName(str);    //获取路径名,没有文件名

    涉及到路径就使用Path,有时候经常和File混合,可能是个人原因

    b:File读写数据

      (1):以字节形式读取:

    byte[] bte = File.ReadAllBytes(@"C:Usersxsh.csDesktop
    ew.txt");
    string str = Encoding.Default.GetString(bte);   //转换为字符串(最适用)   还有:UTF8Encoding.Default.GetString(bte)、Encoding.GetEncoding("GB2312").GetString(bte)
    、ASCIIEncoding.Default.GetString(bte) 等多种编码格式

     (2):逐行读取

    string[] st = File.ReadAllLines(@"C:UsersAdministratorDesktop
    ew.txt", Encoding.Default);   //逐行读取内容  遍历数组 可对每一行进行操作

    (3):以文本 形式读取

    string str = File.ReadAllText(@"C:UsersAdministratorDesktop
    ew.txt", Encoding.Default);   //以文本形式读取  对于图片类,视频文件类 等其他类 不适用

    (a):以字节形式写数据

    byte[] by = Encoding.Default.GetBytes(str);
    File.WriteAllBytes(@"C:UsersPath
    ew.txt",by);      

    (b):以数组的形式逐行写数据 

    File.WriteAllLines("new.txt",strArray);   //strArray为定义的数组

    (c):整体写入

    File.WriteAllText("new.txt",str);  //整体写入,最常用的方式 str为字符串

    (d):追加

    File.AppendAllText("new.txt",str);
    File.AppendAllLines("new.txt",str);  //逐行追加

    c:FileStream文件流

       (1):读取文件:

    using (FileStream fread= new FileStream(@"C:Userspath.txt", FileMode.OpenOrCreate, FileAccess.Read))
    {
        byte[] buffer = new byte[1024 * 1024 * 2];
        int r = fread.Read(buffer, 0, buffer.Length);   //返回当前读取的有效字节数
        string str = Encoding.Default.GetString(buffer, 0, r);   //解码
    }
     //参数①: 针对哪一个文件  写文件路径  
     //参数②: 要对此文件进行怎样的操作  
    //参数③: 要对此文件的数据进行怎样的操作 

    (2):写文件:

     using (FileStream fwrite = new FileStream(@"C:Users文件流.txt",FileMode.OpenOrCreate, FileAccess.Write))
     {
        byte[] buffer = Encoding.Default.GetBytes(str);   //str为字符串
        fwrite.Write(buffer, 0, buffer.Length);
     }

    (3):复制文件:

     string path = @"C:Usersvideo.avi";
     string newpath = @"C:UsersvideoNew.avi";
      //创建一个负责读取的文件流  
     using (FileStream fread = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Read))
     {
       //创建一个写入文件的文件流
         using (FileStream fwrite = new FileStream(newpath, FileMode.OpenOrCreate, FileAccess.Write))
         {
            byte[] buffer = new byte[1024 * 1024 * 5];
            while (true)   //文件过大,可能一次读写不完,需要循环
            {
              int r = fread.Read(buffer, 0, buffer.Length);
               if (r == 0)                //当读取不到字节时,说明已经完毕,则跳出循环
                {
                   break;
                }
                  else
                 fwrite.Write(buffer, 0, r);
            }
         }
           Console.WriteLine("复制成功!");
       }

    为什么使用using?  当一个类最终继承IDisposable 这个接口,就需要到释放资源空间,用using就可以自动释放资源空间,提高效率,减少代码量

    d:StreamReader和StreamWriter

    //读取
    using (StreamReader sRead = new StreamReader(@"C:UsersPath.txt", Encoding.Default))
     {
        while (!sRead.EndOfStream)   //指示当前流的位置是否为结尾
         {
             Console.WriteLine(sRead.ReadLine());
         }
     }
    
    //写入
     using (StreamWriter stwr =new StreamWriter(@"C:UsersPath.txt",true,Encoding.Default))
    {
         stwr.Write(str);
    }

    小结:两种方式都可以对文件进行读写操作,相对Stream用的比较多一点,用法很简单,根据write 或者read的方法,传入相应的参数即可。

    总结:c#有很大一部分基础语法,最重要的会使用微软封装的一些类,一些方法。看这些类的方法的重载。如果有vs的那些语言包,都可以看每一个方法重载是做什么的,然后相应的使用。传入相应需要的参数,看返回值。

  • 相关阅读:
    asp.net 中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction
    mvc EF 执行SQL语句
    MVC 自定义AuthorizeAttribute实现权限管理
    EF
    sql 、linq、lambda 查询语句的区别
    说说C#中的enum吧
    C# A窗口内容显示在B窗口中的方法
    C# 程序开始主要是写类和方法 的基本步骤和调用方法
    C# 文件流基本操作步骤
    Ghost命令使用方法
  • 原文地址:https://www.cnblogs.com/xsh-cs/p/8455929.html
Copyright © 2011-2022 走看看