1:字符串 string 的本质就事一个 char 类型的数组;

2:可以使用下标索引字符串中的字符元素;

3:字符串中的一些方法:

  1:str.Contains(""); 这是一种检测在字符串中是否包含指定的子字符串的方式;

  2:str.IndexOf (''); 这个方法是为了获得字符串中某个元素的下标,其中的括号内是单引号;

  3:str.Remove(); 这个方法就是从签入的下标位置开始把后面的都删除掉;如果后面再加一位数这个数表示的是后面删除的位数;

  4:str.Replace (‘3’,‘x’) 这个方法就是把字符串里面的3全部替换成x 完成元素的替换;

  5:str.Split (); 分割字符串

4:方法的重载需要实现两个条件:1:方法的名称是一样的2:方法的参数列表是不一样的;

  其中参数列表的不同包含了{参数类型不同,参数个数不同};

5:在方法的重载中和返回值的类型是没有关系的;public void A (){} 与 public int A(){return 0};这两个是不符合重载的条件的;

6:在调用重载方法时系统会根据实际参数来调用相应的方法;

7: 递归的思想就是方法本身调用方法自己。但是方法的调用必须满足结束的条件(出口);

8:将大的问题分解为小问题,这个小问题和原问题是同样的问题而且比大问题还简单;

9:构造方法--负责初始化对象;构造方法的方法名必须和类名一致;构造方法没有返回值,不需要写void;

10:构造方法中 我们在为一个类创建对象的时候,使用new这个关键字的时候我们就是在默认的调用他的构造方法;

11:也可以在构造方法中去初始化这个类的成员变量;而且构造方法能够增加参数,但是如果增加参数以后我们就必须在创建对象的时候我们必须为其传入实参;

 12:构造方法也可以被重载,在重载的时候我们根据在new后面传入的实际参数来调用我们到底使用了那些构造方法;

13:如果我们没有给类添加一个构造方法,系统会为我们自动添加一个默认的构造方法;

14:构造方法中的public我们也可以改为private 来修饰;如果我们将这个构造方法设为私有的我们就不能再通过这个构造方法来创建对象了;

15:析构方法 ----要在对象被销毁时调用,用来释放内存; ~+类名(){}这样的形式;每个对象有多个构造方法但是只有一个析构方法;析构方法也没有返回值;析构方法前面不能有访问权限和参数;析构方法只能由系统自动调用我们不能主动调用;

16:面向过程就是分析问题的解决步骤然后一步步的去实现它,但是面向对象就是分析问题需要的步骤然后吧问题本身分解为对象,然后解决这个问题;精简案例就是把大象装进冰箱的问题;面向过程和面向对象在面对需求的改进的时候具有的优劣性上的差别;

17: 面向对象对于程序的开发来说更具有 重用性(冰箱门的开关就是在重用),灵活性(我们可以在对系统的需求在改变的时候通过方法的参数的改变来实现把各种不同的东西塞进冰箱里),扩展性(在面对系统的更改时我们可以选择性的去增加和减少那种方法需要被调用,随时增加需要的方法);

18:面向对象的三大特征:封装 、继承 、 多态。 

19:封装就是为了保护代码和数据,将方法和属性放在一个类或者方法中,封装还可以屏蔽复杂性;

20:封装是面向对象的第一步;把方法封装创建了类;

21:继承--一个类可以继承另一个类。被继承的这个类叫做父类或者基类,而继承的这个类就叫做子类,或者派生类;

22:继承以后子类将拥有父类的一切特征;

23:继承可以实现功能扩展(子类可以通过继承拥有自己的独特的特性),可以实现重用(父类的方法特性在子类中可以重新调用);

24:c#中一个子类之允许有一个父类;如果我们创建的类都没有指明继承的父类那么他都是继承自object这个类;

25:抽象方法需要增加 abstract 这个关键字,而且子类实现父类的抽象方法的时候我们必须增加override这个关键字;

26:抽象类中可以包含普通的方法 ;抽象方法不能使用private 访问修饰符;

27:内存中一共有五个区域:

  1:栈区 -- 由系统自己动管理的区域。

  2:堆区 -- 由程序员开辟和管理的内存区域

  3:静态区 (全局区)-- 程序运行中数据一直存在;

  4:常量区 -- 用于存放常量的区域。

  5:代码区 -- 存放程序运行所需要的代码;

28:静态的字段,属性和方法必须由其类来调用才能使用。

29:使用类创建对象的过程叫做实例化;

30:静态构造方法前不允许增加访问修饰符的;

31:静态构造方法会在程序首次访问类的静态成员的时候调用。

32:单例是一种设计模式,确保一个类最多同时只存在一个实例,易于管理和访问。

33:单例就是保证在程序运行的时候一个类只有一个对象,访问对象更加的方便。

34:单例的实现步骤:

  1:私有化构造方法:

      private Player (){}

  2:內键静态实例:

      private static Player _instance;

  3:提供接口给外界用于获取实例:

      public static Player GetInstance (){

          if (null == _instance){

              _instance = new Player ();

            }

          return _instance;

        }

35:方法的替换:如果一个类被子类继承,在子类中去重写这个父类的方法的时候我们需要在这个方法的返回值前加上new这个关键字表示方法被重写、

36:虚方法--在父类中写方法的时候加virtual关键字,在子类中重载的时候加override关键字,这样在父类类型 + 创建子类对象的时候我们使用子类对象调用的时候可以调用子类那种的重载的方法。 这个也是多态的特征。

37:抽象方法和虚方法的不同点:

  1:抽象方法必须在抽象类中。虚方法可以在普通类中实现。

  2:抽象方法不能再父类中实现,而虚方法可以在父类中去实现。

  3:抽象方法的修饰符的关键字不一样。抽象方法要使用abstract 而虚方法需要用 virtual 来修饰。

  4:抽象方法在非抽象的子类中必须实现。 

 38: 由interface定义的的接口:

38:在接口中定义方法的时候我们不需要增加访问修饰符,默认的都是public。而且接口中的方法不能实现;

39:一旦某个类继承了一个接口那么这个类就必须实现这个接口的所以成员,接口不能被实例化;

40:泛型类--需要在类名后面加上泛型类型。

41:定义的时候需要用T泛型类型表示任意一种数据类型。

42:使用泛型的优点:

  1:使用泛型能够提高代码的重用。

  2:使用泛型时,由于类型不能确定所以不能使用算数的运算符

43:集合是一种容器,用来管理相关的U对象组。集合分为泛型集合和非泛型集合。

44:使用非泛型集合的时候必须输入命名的空间:System.Collections

45:ArrayList是一个特殊的,可以通过增加和删除元素来动态的改变数组长度。 可以灵活的插入,删除,访问元素。不是强类型,速度和普通的数组比较慢。

46:List是一种强类型的列表,而且list在大多数情况下比arraylist执行的更好而且类型安全。

47:Dictionary是一种键和值得组合,而且dictionary是一种无序的不可以通过下标来访问,而且建和值都是唯一的。

48:栈是一种泛型类型的集合,它遵守的是后进先出的原则:stack<string> sta = new stack<string>();这样定义。

49://增加元素的 也就是入栈的方法为:sta.Push();

50:

sta.Push("小明");

sta.Push ("校长");

sta.Push ("老李");
//把元素出栈
string s1= sta.Pop();

出栈的时候是遵循后入先出的原则,所以最后s1的值就是老李这个值;pop掉这个元素以后,那么栈中就没有这个元素了。

51:队列的定义方式:Queue<string> q = new Queue<string> ();

//向队列中增加元素的方法。
q.Enqueue ("老王");
q.Enqueue ("老李");
q.Enqueue ("老杨");

/

//获取队列中的元素
string s1= q.Dequeue();

获取的原则就是先入先出的原则;s1的值就是"老王"这个值

52:队列和栈中都允许加入重复的元素;

 

posted on 2017-02-18 16:28  春天里的麦子  阅读(143)  评论(0编辑  收藏  举报