C#基础知识点

来源:互联网 发布:22级研究所升级数据 编辑:程序博客网 时间:2024/06/08 19:15

1.类中的静态成员函数,静态变量,只能用类名调用,不能用对象调用(C++可以)

2.值类型:简单类型,结构体类型,枚举类型

 引用类型:类,数组,接口,委托,string,当结构体作为类的字段或属性时在堆中,结构体实例在栈中,字段指向栈

3.值类型不允许未null,引用类型可以

4.Outref都是传递内存,ref在调用的时候要进行初始化,out可以不初始化,out指定的参数在进入函数时会清空自己,因此可以不需要赋值(C++里面的引用)

5.Sealed表明类不能被继承,或者方法不允许在派生类重写(c++里面的final

6.抽象类与接口区别:接口是can do,类是is a,抽象类中的方法可以给出实现部分。

接口可以多继承而抽象类不可以。

7.抽象类:抽象类中的方法必须要实现抽象方法,抽象类不可以构造,但是可以声明例如

 //a s=new a();//不可以通过抽象类构造 a s =new b();//可以声明

8. List就是vector,如果删除a[2],则a[3]就成了a2,增加元素是s.add();,如果列表声明时长度为10,增加元素的时候内存不够一次性就扩大10,s.count()获取的是存的数据的大小,不是容量的大小。

dictionarymap.add,增加,查询a[键名]删除a.remove(建名)修改a[键名]新值

常用方法:ContainsKey(l)是包含某个键,ContainsValue()是否包含这个值

9.委托与事件:

public delegate void GreetingDelegate(string name);定义委托,函数类型

public event GreetingDelegate MakeGreet;
    public void GreetPeople(string name) {
       if(makegreet!=NULL)

                    MakeGreet(name);

事件总是private的只能用-=或者+=

10.装箱与拆箱

值类型转换为引用类型的过程叫装箱,相反叫拆箱

13.base.student();是子类调用基类的一种方法

14.匿名类型是var,输入之后自动确定值,与C++auto类似

15.重写(override),覆盖(new),隐藏(new)

重写和覆盖都是针对虚函数的,重写之后会改变父类的方法,而覆盖不会。

隐藏是父类中的没有虚函数,但是子类有个与父类同名的。

(1)当用子类创建父类的时候,如 C1 c3 = new C2(),重写会改变父类的功能,即调用子类的功能;而覆盖不会,仍然调用父类功能。

(2)虚方法、实方法都可以被覆盖(new),抽象方法,接口 不可以。

(3)抽象方法,接口,标记为virtual的方法可以被重写(override),实方法不可以。
4重写使用的频率比较高,实现多态;覆盖用的频率比较低,用于对以前无法修改的类进行继承的时候。

16.派生类的构造与C++类似(有时间去看看C++)

  Class Student(int x,int y):base(y){x=this.x}

17protect类型(C#不分继承):当没继承的时候和private一样,有继承的时候表示可以访问。

18.字符串(与C++很大不同):

字符串如果在初始化是确定了值就不可以修改!

 string s = "aaa";  s = "bbb";//不能修改的意思是不能改变内存的值,这样可以是因为改变了s的指向,aaa在内存中还存在会被GC自动回收

 

19.string与stringBuilder

前者是不可改变的(内存),后者可以改变。

StringBuilder三种初始化方式:

stringbuilder sb=new stringbuilder(aaa);

Stringbuilder sb=new stringbuilder(20);

Stringbuilder sb=new stringbuilder(aaaa,1000);

原创粉丝点击