COM (component object model):组件对象模型
每个东西必须属于一个类,请暂时忘掉全局变量
c#编译器中竟然没有链接器,为什么呢?
类,代表,数组,借口,都是引用类型;什么是引用类型?与之相
对的是值类型
什么是代表?类似于指针?
先声明一个代表,用delegated?
system.Array 类是所有数组类型的基类;
数组:一维,二维,,,可变数组(各个维数不定)
数组的初始化;
可变数组又是怎样的;
什么是拆箱和装箱?
拆箱和装箱是两个相反的机制概念,这两种机制相当于c或是c
++中的类型转换,这里的拆箱是指可以把值类型(知道是哪些类型
吧)转换成object类型(对象类型),拆箱就是相反的过程;注意
类型一致性;
注意:结构体是值类型,类是引用类型!
要给你一个定义时没有被赋值的变量赋值必须是在一段可执行的代
码中进行?
什么是输入参数 in?什么是输出参数out?还有引用参数ref?
局部变量没有默认值!
静态变量,非静态变量,数组元素,输入参数,输出参数,引用参
数,局部变量;
值类型转换类似于C和C++;也分为隐式转换和显式转换;
注意:还有引用类型之间的转换;
is操作符:用于动态的检查运行时对象类型是否和给定的类型兼容
。即是否可以类型转换;
as操作符 显示类型转换,但是不会出现错误;
typeof操作符:用于获得系统原型对象的类型;
注意:要区别于c和c++;
switch语句,每个case语句后必须有一个break;这点不同于
c和 c++;c#中switch的控制语句可以使string类型,而c/c++就
不可以了;
foreach(type T in expression);
预编译:#warning 和 #error
this只能用在类的构造方法,类的方法,结构的构造方法和结构的
方法中!
析构函数不需要显示的调用
C#中的参数传递和C/C++还是有区别的,相同的是值传递,引用传
递,不同的是C#中多了输出参数传递,
非静态方法可以访问静、非静态成员,静态方法只能访问静态变量
;
只读域(域相当于C/C++中简单的成员函数)他和const 常量的区
别是,const是在编译时生成,只读域是在运行时生成(具体是什么
样子,网上看看吧)
c#对每个域都有默认值(在没被用户初始化的前提下)
静态变量的初始化是在类被装载时,而非静态变量的初始化是在生
成对象时;
域与属性的总结:
刚开始还以为,只是对成员变量的不同称呼,没其它的区别。
首先,确实都是成员变量,域更多的是public型,属性更多的是
privated型,域没什么特别之处,特别的是属性,属性的设置与读
取是有set()与get()来实现的(有没有这两个方法也是区分二者的
标准),set(),get()是系统中自带的,有固定的用法!
事件,索引指示器还是值得再好好看看!
多态性:分为普通函数的多态性,这里是指类中,派生类函数对父
类的多态性,两个特点:virtual(父类中函数原型)和override
(子类中重载函数);普通函数在编译时执行,虚函数在运行时执
行;
抽象类:区别于C++中的抽象类,C#中的抽象类是用abstract声明
的,对其中的方法并没有特别的却别,抽象类只是不能定义对象,
可以被继承,也可以继承;
抽象函数:也是用abstract声明的,区别于虚函数(他是特殊的虚
函数),没有执行体,只能在派生类中被实现;抽象函数也可以重
载虚函数,这样以前虚函数的执行体就被屏蔽了;
密封类(sealed修饰)可以继承别的类,但是不能被继承;
密封函数(sealed修饰)和密封类没有什么关系(不是说必须在密
封类中),密封函数必须是重载函数,也就是必须和override一起
用 ( sealed override),同样不可以被继承;
属性的继承:也分为抽像的,密封的;重载,虚属性!
抽象属性必须定义在抽象类中;密封属性类似于密封方法;
接口的定义:类似于类,但要注意其修饰符的种类;借口可以继承
借口,但是只继承方法的声明,并不继承实现部分;接口的继承允
许同时有多个父借口;
接口成员的定义:接口的成员不允许是常量、域、操作符、构造函
数、析构函数、任何静态成员!
接口成员的访问:解决的是二义性问题和如何进行访问;因为支持
多继承,所以存在同名成员的现象,这个时候要确定是否正确的访
问了自己想访问的成员!全权名的概念!
组织应用程序:
基本概念:什么是动态链接库,什么是编译单元,什么又是名字空间和装配及其他们的作用;
指示符: