• 【笔记篇】C#笔记2


    返回目录:目录请戳这里~

    1. C#数组
      基本概念不提。。
    int[] a;
    bool[] b = new bool[10];
    float[] c = {0.5, 57.0, 233.3, 12345.67 };
    double[] d = new double[/*3*/]{233.33, 1926.0817, 4396.0 };

    然后数组和指针有很大的不同。。。
    Array类不会用……
    有多维数组和交错数组。。。

    //多维数组
    int[ , ] a = new int [2,3] {
        {0, 1, 2 },
        {3, 4, 5 }
    };
    int val = a[1,2];
    //交错数组
    int[][] a = new int[][]{new int[] {3, 4, 5 }, new int[]{ 0, 1, 2 };
    int val = a[1][2];

    = =
    1. C#的字符串有Format(喜大普奔),不过格式化字符串是C#的用着略有不惯= = 然后里面封装了大量的方法= =看不过来,有空会细看的。。

    1. struct(值类型)
      很像C++。。但是。。。

      • 不能定义析构函数和默认的构造函数
      • 不能继承或被继承
      • 成员不能是abstract virtual 或 protected (毕竟不能被继承)
      • 不使用new即可被实例化,此时所有的字段都要被初始化。。
    2. enum(值类型):和C++一样。水过了下一个。

    3. class(引用类型) //下面就很OO了哦

      • 类的默认访问标识符是internal,成员的是private
      • 用法基本和C++没差= =所以就这样咯= =
    4. 继承&&多态
      这个地方挺不好懂的(可能是我太弱了)= =

    其实主要原因是因为学C++的时候就不怎么学这些东西(OI根本不考什么OO,你看里面有几个不抖机灵的时候用class的)

    不理解的话呢,建议各位打开自己的IDE实战一下,乱改改代码找找差异,这样对每部分代码是干什么的理解会更清楚一些= =
    然后再扯一句VS对C#的补全非常的完备(毕竟MS一直推C#嘛),很多时候可以让VS帮你完成很多操作,顺便就可以理解一些语句的作用了~~

    看代码比理解概念清晰多了~

    继承的形式很简单:

    class Parent
    {
        ...
    }
    
    class Child:Parent
    {
        ...
    }

    基类的初始化

        class Parent
        {
            protected int a, b;
            public Parent(int x,int y)
            {
                a = x;
                b = y;
            }
        }
    
        class Child : Parent
        {
            public Child(int p, int q) : base(p, q)
            {
    
            }
        }

    C#不支持多重继承~但想实现多重继承的话可以通过接口(interface)(这个还没学,以后再说)

    然后就是多态(不是什么多肽更不是什么堕胎= =)
    (话说你们输入法打“duotai”会出什么啊?)

    继承学C++的时候都用的少,多态什么的就更不懂了QAQ以前写个项目的时候析构函数前面写个virtual但不知道干啥用的啊~好在现在理解了_ (:з」∠) _
    所以基本全靠自己体会(我就是自己打了打代码理解的)

    C#的多态性分为两种:
    - 静态多态性
    静态多态性有两种技术来实现:函数重载和运算符重载(这个我会啊2333就不说了)
    - 动态多态性
    动态多态性啊,开始的时候挺费解的。
    分开说,先说abstract
    abstract本义是“抽象的”,这样我们用这个关键字就可以创建抽象类,里面包含了抽象方法。。
    代码:

    abstract class Parent
    {
        public abstract void add();//抽象类里定义的抽象方法,无需主体,只需要一个声明,如何实现交给派生类做就好了
    }
    
    class Child : Parent
    {
        private int a, b;
    
        public Child()
        {
            a = 1;
            b = 2;
        }
    
        public override void add()
        {
            Console.WriteLine(a + b);
        } //抽象方法,用override关键字重写 就实现了这个add()方法的功能
    }        

    然后再说virtual..

    //这次是完整的程序了
    using System;
    
    namespace HelloWorld
    {
        class Parent
        {
            protected int a, b;
    
            public Parent(int x,int y)
            {
                a = x;
                b = y;
            }
            public virtual void add() //虚方法
            {
                Console.WriteLine("Parent:{0}", a + b);
            }
        }
    
        class Child : Parent
        {
            public Child(int p,int q) : base(p, q)
            {
    
            }
            public override void add() //使用override关键字重写了虚方法
            {
                Console.WriteLine("Child:{0}", a + b);
            }
        }
    
        class Child2 : Parent
        {
            //本类中并没有重写add()方法
            public Child2(int p,int q) : base(p, q)
            {
    
            }
        }
    
        class MainProcess
        {
            public static void Main()
            {
                Child ch = new Child(3,4);
                Child2 ch2 = new Child2(5, 6);
                ch.add();
                ch2.add();
            }
        }
    }

    编译、运行以上程序,可得结果:
    Child:7
    Parent:11
    说明调用标有virtual方法时,先检查有无重写,有则按重写执行,否则继续往上找,直到找不到重写则按virtual进行= =
    差不多就是这样。。。

    本篇中需要回顾的:
    1. Array类
    2. C#字符串的方法们
    3. 继承和多态还要加强理解= =

    还是要继续加油啊~~

  • 相关阅读:
    手机如何当电脑的摄像头使用
    内网穿透软件
    如何在laravel框架中使用阿里云的oss
    css position 定位详解
    laravel 速查表
    window10如何查看连接过的wifi密码
    sweetalert弹出层组件
    phpstudy安装 与phpstudy_Windows web面板安装
    程序员修炼之道读后感
    JAVA-WEB-简单的四则运算
  • 原文地址:https://www.cnblogs.com/enzymii/p/8412143.html
Copyright © 2020-2023  润新知