C# lesson4

一、数组

1、声明一个数组:

以下为定义一个整数类型的数组:

//方法一
int[] a={1,2,4}
//方法二
int[] a=new int[3];
a[0]=1;
a[1]=2;
//方法三
int[] a=new int[3]{1,2,4}

 二维数组:

int[] a={{1,2},{2,4},{3,4}}

 2、数组操作

a、定位数组:

Console.WriteLine('数组元素为:'+a[i]);

b、添加删除:

ArrayList();

int[] a={1,2,5,22};
ArrayList list=new ArrayList();      //如int类型泛型: List<int> list=new List<int>();
foreach(var i in a){
list.Add(a);           //将a添加到List中   应该传object  传值类型产生装箱(用泛型)
}

泛型解决拆装箱问题:
如果有多重类型数据:
object[] oNum={12;"fg",1.5}
List<object> list=new List<object>();

c、指定位置添加删除

//List.RemoveAt(0);//删除第一个元素  删除索引所在元素
//List.Add(0);//在List的末尾添加0
//List.Insert(1, 5);//在索引值为1处插入5   在索引处插入
//List.Clear();//清除现有所有元素

d、哈希表:(按键值对的形式存储)        //

Hashtable table =new Hashtable();

table.key1="aaa";

table.key2="bbb";

...

foreach(var key in table){

//遍历操作

}

哈希表的泛型:

 二、面对对象的三大特征:

面对对象语言的三大特征:封装、继承、多态;

1、封装

 a、访问修饰符:

public  当前命名空间下所有类    夸程序集也可以用(引用命名空间);

private  只能在当前类里面使用

protected    只能在当前类里面使用   但是能被继承/使用(能夸程序集)

internal       同一个命名空间下的所有类都可以用

protected internal    同一个命名空间下的所有类可用    夸程序集的子类可用 

 注:一个类不声明的话默认是internal    字段和方法默认是private;

  如果类里面不去人为的写构造方法的话,那么实例化对象的时候,会调用默认的那个无参数构造方法;

  如果类里面有人为的构造方法,则实例化对象的时候就会调用那个人为的构造方法;

  如果人为的写一个有参数的构造方法,在实例化的时候调用无参数构造方法就会报错(可以加一个无参数构造方法解决);

 2、继承

a、当一个类继承与另外一个类的时候,他可以继承到此类里面的所有方法(不能够继承构造方法

  若父类的成员是一个私有对象,子类也是继承了,但无访问权限;

b、当实例化一个子类对象的时候,首先是调用父类的对象方法,再调用子类的;

    (子类与父类相同的方法时,隐藏用new,覆写用override)

c、A:B:C ==》   A:C   继承的传递性;

d、A:B,当A和B里有相同的方法时,调用的是子类的方法,(父类默认隐藏),当父类的方法设置为虚方法的时候,子类里面可以通过override对该方法进行覆写(调用时是调用子类);

e、Object类型是任何一种数据类型的父类,可以接收任何一种数据类型的值;

f、父类的变量可以接收子类的对象,反之不行;当父类和子类有相同的方法的时候,当父类的父类的方法被隐藏的时候,调用的是父类的方法;当方法被子类覆写的时候,调用的是子类的方法;

g、sealed   密封类  不能被继承(如果一个类不想被继承就   设置成密封类)

h、类是单继承;(一个类只能继承于一个)

3、多态

    多态的意思是:方法名相同,方法不同;分为覆写和重载;(重载就是方法名相同,但是传的参数不同(个数、类型等),使一个方法有多种实现---重载方式)

  静态方法不能被覆写;

 三、其他:抽象类和接口

抽象类:加有abstract关键字的类

    抽象类是必须有抽象方法(方法前加abstract)可以有非抽象成员;抽象方法必须在抽象类里面;

    抽象类不能被实例化;

    一旦一个类继承一个抽象类,那么这个类必须要实现这个抽象类里面的所有方法;

    抽象类里面的所有成员可以设置任意一种访问修饰符;

接口:interface   interface1   定义一个接口;

    接口就是一种更加严格意义上的抽象类;(相当于在类和方法前面加了public abstract)

    接口里面不能够有非抽象成员;

    一个类继承于接口时,必须实现接口里面的所有方法;(与抽象类的继承不同,它不需要写override)

    接口是多继承

    接口里面的所有内容都是public;

 知识点总结:

 

原文地址:https://www.cnblogs.com/zhuyucun/p/6282977.html