• Day09~12_C#.面向对象


    01. 类的基本定义

      [public] class 类名{

      }

      在类中,this : 表示当前类的实例化对象;

      类是不占内存的,但类的实例化对象是占内存的;

    02. 字段、属性、方法

      字段:用于描述一个类的相关特征的信息,在C#中,一般使用 _小写字母 表示;  (相当于Delphi中的 private XXXX;)

        如: private String _name;    private int _age;

        字段在赋值时,无任何约束,有可能会产生一些无意义的内容;

        如:  xxx._age = -10;    年龄赋值-10,是不符合实际应用规则的;

      属性:是对字段的一种封装,是对特定字段上一些规则的应用;

        

     1           publi String Name{get;set;}  
     2 
     3       public int Age{
     4 
     5         get{ return _age;}
     6 
     7         set{ 
     8 
     9           if(value>0){
    10 
    11             _age = value;
    12 
    13           }
    14 
    15         }
    16 
    17       }

        当有相关约束时,可以在相应的 get函数,或set函数中进行配置处理

        相当于Delphi中的 property

    03.关于静态与非静态的区别

      a.   在非静态类中,既可以实例成员,也可以有静态成员;

      b.   在调用实例成员的时候,需要使用对象名.实例成员;

        在调用静态成员的时候,需要使用类名.静态成员名;

      >>   静态成员必须使用类名去调用,而实例成员使用对象名调用;

        静态函数中,只允许访问静态成员,不允许访问实例成员;

        实例函数中,既可以使用静态成员,也可以使用实例成员;

      >>   静态类不允许实例化;

        静态类在整个项目中资源共享;

    04.构造方法

      public 类名(){ }

      >> 构造函数,必须为 public , 无返回值,连 void 也不行;

        构造函数的名称,必须和类名一样;

        构造函数可以重载;

      >>类中未写构造函数时,系统默认配置一个无参构造函数;

        当类中写了构造函数后,系统将不再默认提供无参构造函数;此时若再需要无参构造函数,需要自行写入一个;

    05. this 关键字

      >> 构造函数调用另外一个构造函数

        

      >>  析构函数 (如果不配置檄构函数,系统资源将由GC回收资源)

        

     06.值类型 和 引用类型

      区别:

        1. 值类开和引用类型在内存上存储的地方不一样;

        2. 在传递值类型和传递引用类型的时候,传递的方式不太一样;

        值类型我们称之为值传递,引用类型我们称之为引用传递;

        值类型:

            int, double, bool, char, decimal, struct, enum;

            值存储在栈中;

        引用类型:string, 自定义类、数组..

            值存储在堆中;

      >>实时监测窗口调出

        

        

      >> 快速给字段生成属性

        

         

       >>字符串与数组的转换:

        

      >>字符串的一些方法

       

     1 //转大写
     2             ck = a.ToUpper();
     3             //转小写
     4             ck = a.ToLower();
     5             //取长度
     6             int c = a.Length;
     7             //是否相同比较,区分大小写
     8             flag = a.Equals(b);
     9             //是否相同比较,不区分大小写
    10             flag = a.Equals(b, StringComparison.OrdinalIgnoreCase);
    11             //分割字符串
    12             //.折分标准
    13             char[] chs = { ' ', '_', '+' };
    14             //拆分后,返回的数组中,拆分标位对应位置会返回空字符串""
    15             string[] str = a.Split(chs);
    16             //拆分后,拆分标准会被清理掉,只保留有效字符
    17             str = a.Split(chs, StringSplitOptions.RemoveEmptyEntries);
    18             //字符串替换
    19             a = a.Replace("原内容", "新内容");
    20             //字符串取子串 (开始位,子串长度): 从指定位置开始取指定长度子串,若不写长度,默认从指定位置开始到结束
    21             a.Substring(0, a.Length - 1);
    22             //判断是否以XX开始
    23             flag = a.StartsWith("开始内容");
    24             //判断是否以XX结束
    25             flag = a.EndsWith("结束内容");
    26             //判断是否包含xx
    27             flag = a.Contains("内容");
    28             //从开始位取首个匹配点
    29             c = a.IndexOf("内容");
    30             //从结束位开始取首个匹配点 (参数2为含量量,匹配时包括这个位置),无匹配时返回-1
    31             c = a.LastIndexOf("内容", 1);
    32             //去空
    33             b = a.Trim();
    34             b = a.TrimStart();
    35             b = a.TrimEnd();
    36             //判断是否为空
    37             flag = string.IsNullOrEmpty(ck);        // null, "" 返回true, 否则false
    38             flag = string.IsNullOrWhiteSpace(ck);   // null, "", "    " 都返回true, 否则为false;
    39             //字符串连接
    40             b = string.Join("|", "张三", "李四", "王五", "赵六");

     07. 继承

      public class 子类: 父类{   }

      特性:

        继承的单根性:一个子类只能有一个父类;

        继承原传递性;

       >> 子类调用父类的构造函数

        

      >> new 关键字的作用

        * 实例化对象

        * 隐藏从父类中继承过来的同名成员;

          --> 隐藏的结果:子类调用不到父类的成员; 

    08. 里氏转换

      >> 子类可以赋值线父类;

      >> 如果父类中装的是子类,可以将这个父类强制转换为子类对象;

      >>  is : 判断一个对象是否是某个类型的对象;  如果是,则返回 True, 否则 返回 False

      >> as: 将一个对象转换为某个类型的对象; 如果能转换,返回对应类型的对象,否则返回 null; 

    09. 集合 ArrayList

      >> 长度可以改变,类型可以自定义;

      >> ArrayList 的创建及一些方法

        

    10. HashTable   键值对的集合

        

     11. Path 类

         

    12.File 类

        文件操作 类;

        >> 编码转换

          

          

     1 static void Main(string[] args)
     2         {
     3             String ki = "";
     4             String chgInfo = "A张三,你好呀a";
     5             String ckinfo = "";
     6 
     7             Encoding fromE= Encoding.GetEncoding("utf-8");
     8             Encoding toE = Encoding.GetEncoding("gb2312");
     9 
    10             byte[] fromB = fromE.GetBytes(chgInfo);
    11             byte[] toB = Encoding.Convert(fromE, toE, fromB);
    12 
    13             for (int i = 0; i < fromB.Length; i++)
    14             {
    15                 if (ckinfo == "")
    16                 {
    17                     ckinfo = fromB[i].ToString();
    18                 }
    19                 else
    20                 {
    21                     ckinfo = ckinfo +"," + fromB[i].ToString();
    22                 }
    23             }
    24             Console.WriteLine(ckinfo);
    25 
    26 
    27             ckinfo = "";
    28             for (int i = 0; i < toB.Length; i++)
    29             {
    30                 if (ckinfo == "")
    31                 {
    32                     ckinfo = toB[i].ToString();
    33                 }
    34                 else
    35                 {
    36                     ckinfo = ckinfo + "," + toB[i].ToString();
    37                 }
    38             }
    39             Console.WriteLine(ckinfo);
    40 
    41             Console.ReadKey();
    42         }

         >> File的读取操作

           

         >> List<T> 泛型

        >> Dictionary<键类型,值类型>;

        >> FileStream: 文件流;   >  操作字节

          

          *> 可以使用 using(){   }  来实现自动释放;

        >> StreamReader 和 StreamWriter : 对文本文件的处理   

          > StreamReader:  返回字符串

            文件尾部识别:  StreamReader.EndOfStream;  

          

     13. 多态

      >>实现多态的三种方法:

        a. 虚方法;

          > 将父类方法,标记为虚方法;

            父类中标识: public virtual void doTask();  虚方法,允许有方法体;

            子类中重写:    public override void doTask();   如果不重写,调用的,仍然是父类的方法;

        b. 抽象类;

          > 将一个类标识为抽象类:  public abstract class xxxx;

          > 类中的方法,标识为抽像方法;  public abstract void doTask();   抽像方法没有方法体;

          > 实现类继承抽象类,在实现类中对方法重写,完成真实的业务处理;   public override void doTask();  

        c. 接口;

  • 相关阅读:
    【转】HTML CANVAS
    【转】JY 博客
    【转发】如何使用NPM?CNPM又是什么?
    【转廖大神】package.json 包安装
    【转】Socket接收字节缓冲区
    C# 串口操作系列(5)--通讯库雏形
    C# 串口操作系列(3) -- 协议篇,二进制协议数据解析
    C# 串口操作系列(4) -- 协议篇,文本协议数据解析
    .netCore微服务使用Nginx集中式管理实现
    nginx代理访问及上传文件异常413 Request Entity Too Large
  • 原文地址:https://www.cnblogs.com/jieling/p/16143973.html
Copyright © 2020-2023  润新知