美文网首页
C#笔记二

C#笔记二

作者: 知交 | 来源:发表于2018-10-11 10:08 被阅读14次

一. 静态方法,静态类 (static)

静态和非静态区别

  1. 在非静态类(public class)中,既可以有实例成员,也可以有静态成员(static)
  2. 实例函数中,即可使用静态成员,也可以使用实例成员。
  3. 静态类中只允许有静态成员,不能有实例成员。
  4. 静态成员必须使用类名调用,实例成员使用对象名调用
  5. 静态函数中,只能访问静态成员。
  6. 静态类 ---> 工具类 静态类在整个项目中资源共享 (存在“静态存储区域”)

总结理解:

  1. 静态方法和OC中类方法类似,但是却多了静态类和静态变量的概念。只能用类名调用。统一用static限制,VIP级别。
  2. 非静态类(public class),非VIP级别,什么人都有。
  3. 由于静态类资源共享,所以静态类也相当于单例。

二. 构造函数

  1. 构造函数可以重载
  2. this
    • 代表当前类的对象
    • 在类中显示调用本类的构造函数 语法 :this

三. 字符串方法

  1. Length 长度
  2. ToUpper() :将字符串转换成大写形式
  3. ToLower(): 将字符串转换成小写形式
  4. Equals(string2,StringComparison.OrdinalIgnoreCase): 比较两个字符串是否相等,可以忽略大小写
  5. Split 分割字符串,返回字符串类型的数组
    string s = "ab   ddfg  _ f +  = skksks  ,,, fdf";
    //分割字符串用Split
    char[] chs = {' ','_','+','=',','};
    string[] str = s.Split(chs,StringSplitOptions.RemoverEmptyEntries);
    Console.ReadKey(); 
    //结果是"abddfgfskksksfdf";
  1. string Replace(string oldValue, string newValue) 字符串替换
  2. string Substring(int startIndex) 字符串截取,从starIndex开始截取到最后
  3. string Substring(int startIndex, int length) 字符串截取,从starIndex开始截取length 长度的字符串
  4. bool Contains(string value)判断是否包含
  5. bool StartWith(string value) 判断字符串是否以字符串value开始
  6. bool EndWith(string value) 判断是否以value结尾
  7. int IndexOf(string value) 去value第一次出现的位置
  8. LastIndexOf
  9. Trim() 去空格,前后都去
  10. TrimEnd() 去掉结尾的空格
  11. TrimStart() 去掉前面的空格
  12. IsNullOfEmpty() 判断是不是空字符串或者null
  13. Int IndexOf(string value, int startIndex)

四. 集合类型

1. ArrayList (数组)

  1. list.Sort(); 升序排列
  2. list.Reverse(); 反转排列
  3. list.Clear()
  4. list.Insert(1,"插入的")
  5. list.InsertRange(0,new string[] {"zhangsan","lisi"});
  6. list.Remove("123");
  7. list.RemoveAt(0); //根据下标删除元素
  8. list.RemoveRange(0,3);
  9. bool b = list.Contains("123");
  10. list.Add();
  11. list.AddRange(); //添加集合元素
  12. list.Count 实际包含个数
  13. list.Capacity 可包含个数,容量

2. Hashtable

  1. var: 根据值推断类型,在声明的时候必须给变量赋值。

五. 泛型集合

  1. 泛型集合 集合中内容的类型确定,长度可变

  2. List< int>, Dictionary< int, string>

    //创建泛型集合对象
    List<int> list = new List<int>();
    list.Add(1);
    list.Add(2);
    list.AddRange(list);
    //集合转数组
    int[] nums = list.ToArray();
    //数组转集合
    List<int> listTow = nums.ToList();
        
    //字典
    Dictionary<int, string> dic = new Dictionary<int, string>();
    
    dic.Add(1, "liujing");
    dic.Add(2, "xuzheng");
    dic.Add(3, "lisi");
    dic[1] = "xinlaide";
    foreach (KeyValuePair<int, string> item in dic)
    {
        Console.WriteLine("{0}-------{1}",item.Key,item.Value);
    }
    

六. 文件操作

1. Path 路径

string str = @"C:\3000soft\Red Spider\Data\Message\老赵.wav";
        //获得文件名
        Console.WriteLine(Path.GetFileName(str));
        //获得文件名但不包含扩展名
        Console.WriteLine(Path.GetFileNameWithoutExtension(str));
        //获得文件的扩展名
        Console.WriteLine(Path.GetExtension(str));
        //获得文件所在的文件夹的名称
        Console.WriteLine(Path.GetDirectoryName(str));
        //获得文件所在的全路径
        Console.WriteLine(Path.GetFullPath(str));
        //连接两个字符串作为路径
        Console.WriteLine(Path.Combine(@"c:\a\"),"b.txt");

2. File 文件

//创建一个文件
        File.Create(@"C:\Users\xuzheng\new.txt");
        
        //删除一个文件
        File.Delete(@"C:\Users\xuzheng\new.txt");
        //复制一个文件
        File.Copy(@"C:\Users\xuzheng\new.txt", @"C:\Users\xuzheng\code.txt");
        //移动文件(剪切)
        File.Move(@"C:\Users\xuzheng\new.txt", @"C:\Users\xuzheng\code.txt");
        
        
        //读取数据
        byte[] buffer = File.ReadAllBytes(@"C:\Users\xuzheng\new.txt");
        string s = Encoding.GetEncoding("GB2312").GetString(buffer);
        Console.WriteLine(s);
        Console.ReadKey();
        
        //写数据
        string str2 = "今天天气好晴朗,处处好风光";
        //需要字符串转换成字节数组
        byte[] buf = Encoding.Default.GetBytes(str2);
        File.WriteAllBytes(@"C:\Users\xuzheng\code.txt", buf);
        
        //以行的形式进行读取
        string[] contents = File.ReadAllLines(@"C:\Users\xuzheng\new.txt", Encoding.Default);

        foreach (string item in contents)
        {
            Console.WriteLine(item);
        }
        Console.ReadKey();
        
        //读取文本文件
        string str = File.ReadAllText(@"C:\Users\xuzheng\new.txt", Encoding.Default);
        Console.WriteLine(str);
        

        //写文件
        //分行写
        File.WriteAllLines(@"C:\Users\xuzheng\nnn.txt",new string[]{ "abc","dde"});
        Console.WriteLine("写入OK");

        //整个写
        File.WriteAllText(@"C:\Users\xuzheng\nnb.txt","shdhisnsndkl涉及到法律你是就快速打开包括说不定吧");
        //追加
        File.AppendAllText(@"C:\Users\xuzheng\nnb.txt", "+jhiuabdjk");
        Console.WriteLine("OK");
        Console.ReadKey();

        //file类只能读取小文件,因为他读取的方式是全部一下都读进来

3.文件流 FileStream (用的时候去🔍)

//读取文件
using (FileStream fs= new FileStream(@"C:\Users\xuzheng\Desktop\111.txt",FileMode.OpenOrCreate,FileAccess.Read))
        {
                //每次读取多少数据
            byte[] buffer = new byte[1024*1024*5];

            //读取 返回实际读取到的大小
            int r = fs.Read(buffer, 0, buffer.Length);
                //转成字符串
            string s = Encoding.Default.GetString(buffer, 0,r);

            Console.WriteLine(s);

        }
        Console.ReadKey();
            
            //写入数据
        using (FileStream fsWrite = new FileStream(@"C:\Users\xuzheng\Desktop\123.txt",FileMode.Append,FileAccess.Write))
        {
            string s = "今天天气好清凉";
                //转成字节数组
            byte[] buffer = Encoding.Default.GetBytes(s);
            //写入
            fsWrite.Write(buffer, 0, buffer.Length);
            
        }
        Console.ReadKey();
        
        
        //使用 StreamReader 读取数据
        using (FileStream fsRead = new FileStream(@"C:\Users\1234.txt",FileMode.OpenOrCreate,FileAccess.Read))
        {
            using (StreamReader sr = new StreamReader(fsRead, Encoding.Default))
            {
                while(!sr.EndOfStream)
                {
                    Console.WriteLine(sr.ReadLine());
                }
            }
        }

        Console.ReadKey();
        
        //使用 StreamWriter 写入数据
        byte[] buf = new byte[1024 * 1024 * 5];
        using (StreamWriter sw = new StreamWriter(@"C:\Users\1234.txt",true,Encoding.Default, buf.Length))
        {
            sw.WriteLine("fdghjkl");
        }

        Console.ReadKey();

4. Directory (目录) 文件夹操作

//创建一个文件夹
Directory.CreateDirectory(@"C:\a");
  
//删除文件夹
Directory.Delete(@"C:\a", true);

//剪切文件夹
Directory.Move(@"C:\a",@"C:\Users\xuzheng\Desktop");
    
//获取指定文件夹下所有文件的全路径
Directory.GetFiles(@"C:\Users\xuzheng");

//获取指定文件夹下所有指定后缀文件的全路径
Directory.GetFiles(@"C:\Users\xuzheng","*.jpg");

//h获取指定目录下所有文件夹的全路径
Directory.GetDirectories(@"C:\Users\xuzheng");

//判断指定的文件夹是否存在
bool shi = Directory.Exists(@"C:\User\xuzheng\Desktop\aaa");

七. 继承

  1. public class Student: Person
  2. public void Student(string name):base(name)
  3. new 关键字 彻底隐藏父类中的同名方法
  4. 里氏转换 is 表示类型转换,如果能够转换成功,返回true
  5. as 表示类型转换,如果能够转换成功,则返回对应对象,否则返回null
  6. protected(受保护的)关键字,子类和父类可以访问父类的属性,其他类不行。
  7. 类不允许多继承(单根性),想要多继承的时候可以用接口。

八. 多态

1.虚方法 virtual override

  1. virtual:(虚拟),虚方法关键字,在父类需要多态使用的方法前使用。
  2. override: (覆盖),子类重写父类的虚方法,与virtual相互照应。

2.抽象类 abstract

  1. abstract 标记抽象类(父类)和抽象方法,
  2. 抽象方法没有方法体,子类去实现。
  3. 抽象类不能被实例化。
  4. 抽象类里可以写虚方法(virtual)

3.接口 interface

  1. 语法 [public] interface I...able
  2. 接口中的成员不能添加访问修饰符,默认就是public
  3. 不允许写具有方法体的函数
  4. 接口中只能有方法
  5. 接口和接口之间可以多继承,类是单根性所以只能单继承,但是类可以继承多个接口。

相关文章

  • C#笔记二

    一. 静态方法,静态类 (static) 静态和非静态区别 在非静态类(public class)中,既可以有实例...

  • C#-分享几种常用的编码转换,base64、MD5、string

    C# Base64编码 C# 文件与二进制流 C# MD5加密 C# string和byte[]

  • C#入门笔记(二)

    0x00 枚举 枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。C# 枚举是值数据类型。 enum...

  • C#学习笔记(一)2018.05.15

    C#学习笔记(一) 笔者是在有Java编程经验(《Java语言程学设计》作者:梁勇)的基础上,进行C#的学习。 编...

  • C#学习笔记

    C#中的线程(一)入门 C#中的线程(二) 线程同步基础 C#中的线程(三) 使用多线程 20190130补充: ...

  • 工作岗位调研

    一、与C#有关的工作岗位: C#软件开发工程师 C#高级研发工程师 C#.NET软件工程师 CAD二次开发,C#程...

  • WPF/C#学习笔记.1:WPF中的布局TabControl,G

    WPF/C#学习笔记.1 WPF中的布局TabControl,Grid与GridSpliter等 WPF布局原则 ...

  • C# CookBook 基本语法

    笔记资料:C#开发轻松入门 慕课网 https://www.imooc.com/learn/422 .NET开发简...

  • C# 笔记

    1、枚举的转换 2、C#判断对象类型 3、用反射动态绑定控件事件 容器窗体内包括一个1列2行的TableLayou...

  • c# 笔记

    c#程序刚开始启动的时候都会有唯一一个入口函数main()函数,而非静态成员又称实例成员,必须作用于实例。在程序刚...

网友评论

      本文标题:C#笔记二

      本文链接:https://www.haomeiwen.com/subject/ldgvaftx.html