C#

面向对象

封装

封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏 

继承

继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。

多态(基类的virtual方法,子类override基类的方法)

实现多态,有二种方式,覆盖,重载。

覆盖,是指子类重新定义父类的虚函数的做法。

重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许参数顺序都不同)。

C#泛型

定义:通过参数化类型来达到类型的抽象化,从而得到更好的面向对象体验。

CLR:常用简写词语,CLR是公共语言运行库(Common Language Runtime)和Java虚拟机一样也是一个运行时环境,它负责资源管理(内存分配和垃圾收集等),并保证应用和底层操作系统之间必要的分离。CLR存在两种不同的翻译名称:公共语言运行库和公共语言运行时。

泛型的约束:约束由where子句表达,有基类,接口,构造器,值类型/引用类型四种约束

 

写入数据的格式:先进后出;

class NoGenericStatc
    {
        object[] store; 
        int index;
        public NoGenericStatc(int size)
        {
            this.store = new object[size];
            this.index = 0;
        }
        //
        public void Push(object x)
        {//先使用,在计算。当指针走到该位置时计算,然后在跳到下一个空位上
            store[index++] = x;//store[index] = x; index++;
        }
        //
        public object Pop()  
        {
            return store[--index];//为什么--在前面???因为指针此时指在空位上
        }
}
View Code

 委托

将方法作为方法的参数

namespace DelegateDemo
{
    //声明一个委托(delegate 关键字)
    delegate void GreetingPeopleDelegate(string name);

    class German
    {
        public void GreetingGerMan(string name)
        {
            Console.WriteLine("deMorning, " + name);
        }
    }

    class Franch
    {
        public static void GreetingFranch(string name)
        {
            Console.WriteLine("faMorning, " + name);
        }
    }
    class Program
    {
        private static void EnglishGreeting(string name)
        {
            Console.WriteLine("Morning, " + name);
        }

        private static void ChineseGreeting(string name)
        {
            Console.WriteLine("早啊, " + name);
        }

        private static void JapaneseGreeting(string name)
        {
            Console.WriteLine("XiRiBen" + name);
        }

        private static void KorenGreeting(string name)
        {
            Console.WriteLine("HanguoGuizi" + name);
        }

        private static void FeilabinGreeting(string name)
        {
            Console.WriteLine("nima" + name);
        }
     
        static void Main(string[] args)
        {
            GreetingPeopleDelegate delCh = new GreetingPeopleDelegate(ChineseGreeting);

            GreetingPeopleDelegate dJ = JapaneseGreeting;

            delCh += KorenGreeting;
            delCh += EnglishGreeting;

            German g = new German();
            delCh += g.GreetingGerMan;//在该类的外面调用方法,先new在点出来
            delCh += Franch.GreetingFranch;//在该类的外面调用实列方法,直接从类中点出来


            GreetPeople("中国地球公民", delCh);
            Console.WriteLine("$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
            delCh -= KorenGreeting;
            GreetPeople("中国地球公民", delCh);

        }

        private static void GreetPeople(string name, GreetingPeopleDelegate fangfa)
        {
            fangfa(name);
        }

 事件是一种特殊的委托,它使得由事件修饰的委托在定义事件的类的外部只能出现在 +=或-=的左边,

也就是不能够被在定义事件的类的外部进行直接调用事件修饰的委托,而只能用+=的方式注册方法到事件所修饰的委托。

 

posted @ 2018-04-10 11:16  诸子百家,唯我纵横  阅读(221)  评论(0编辑  收藏  举报