《c#完全手册。pdf》
1. 面向对象 = 对象 + 类 + 继承 + 通信 。如果一个软件系统是使用这样四个概念来设计的,我们认为这个软件系统是面向对象的。
2. 静态成员是属于类所有的,非静态成员则属于类的实例--对象。
3. 在一个类的实例—对象的生命周期中,最先执行的**就是类的构造函数。构造函数是用来初始化对象的特殊类型的函数。
可以使用带参数的构造函数,向它传递参数来对类的不同实例进行不同的初始化。
4. 非静态方法可以访问类中的任何成员,而静态方法只能访问类中的静态成员。
5. 方法的重载:类中两个以上的方法(包括隐藏的继承而来的方法),取得名字相同,只要使用的参数类型或者参数个数不同,编译器便知道在何种情况下应该调用那个方法,这就叫方法的重载。
也就是说,可以在一个类中定义两个名字相同的方法,只要参数或者返回值有一点不一样就可以。调用的时候,编译器会根据情况自动调用正确的方法。
6. 在c#中,所有数据要么属于某个类,要么属于某个类的实例,从份体现面向对象的思想。
7. 域。const 型表达式的值在编译时形成,而static readonly 表达式的值直到程序运行时才形成。
8. 事件(event)就是类或对象用来“发出通知”的成员。通过提供事件的句柄,客户能够把事件和可执行**联系起来。
9. 事件的预定是通过为事件加上左操作符“+=来实现的。
10. 如果每个事件的存储开销太大,我们就可以在类中包含事件访问声明,按私有成员的规则存放事件句柄列表。
11. 多态性:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。多态性通过派生类重载基类中的虚函数型方法来实现。
12. 多态性:
同一操作作用于不同的类的实例,不同的类将进行不同的解释,最后产生不同的执行结果。
c#支持两种类型的多态性:
编译时的多态性:通过重载实现。对于非虚成员来说,系统在编译时,根据传递的参数、返回的类型等信息决定实现何种操作。
运行时的多态性:通过虚成员实现。
13. 派生类中重新定义此虚函数时,要求的是方法名称、返回值类型、参数表中的参数个数、类型、顺序都必须于基类中的虚函数完全一致。在派生类中声明对虚方法的重载,要求在声明中加上override关键字,而且不能有new,static,virtual修饰符。
14. 非虚的派生类要求通过重载为继承的虚方法提供自己的实现,而抽象方法则不包含具体的实现内容,所以方法声明的执行体中只有一个分号“;”
15. 密封方法必须对基类的虚方法进行重载,提供具体的实现方法。所以,在方法的声明中,sealed修饰符总是和orerride修饰符同使用。
属性声明时如果有sealed修饰符,同时也必须要有orerride修饰符。
16. 构造函数实例构造函数和静态构造函数。前者在每个实例或对象创建时被调用,后者在类的第一个对象被创建之前被调用(而且只调用一次)。
17. 析构函数尽量不用。
18. 装配有两种类型:应用程序和库。应用程序都有一个入口,通常扩展名为“.exe”。库则不包含入口,通常扩展名为“.dll”
薄弱环节:1. 事件和索引指示器。
2. 属性访问器。
3. 接口。
1. 由于sizeof运算符直接操纵内存,因此应尽可能避免使用它。
2. switch语句每一个分支中的语句,必须以break结束。
3. 随机数。
int nbr = 0;
rnd = new
nbr = int)
4. 类的说明格式。
class_name object_identifier = new class_name()
关键字 new 用来预留内存。
5. 类中包含:数据成员和函数成员。(数据成员甚至可以是其他类)
数据成员如果不加public限定符,将无法在类的外面访问。
访问静态数据成员时,必须使用类名,而不是对象名。
6. 属性为访问类中的私有变量提供了手段。重新声明一个public变量,通过它,利用属性存储器get和set中的程序语句赋值或取值,访问私有变量。
例:class point
int my_x;
public int x,}
在二维数组中声明长度不同的数组。
char myname = new char[3]
myname[0]=new char;
myname[1]=new char;
myname[2]=new char;
引用数组要素时必须用两个方括号 , 如,myname[2][1]
数组的长度被存储在一个名为length的成员中。myname[2]. length
可用foreach 遍历数组。
13. 方法重载: 指的是创建多个名称相同的方法。其中每个方法都在某些方面具备唯一性,以便编译器能够区别它们。
每个方法都有其特征标(signature),方法的参数个数及类型决定哪个方法是合适的。但,返回类型不能作为特征标。其实就是c#将名称一样,参数不同的方法视为不同的方法,并自动匹配。
构造函数也可以重载。
14. 方法要接受未知数目的参数,可以使用关键字params,该关键字用于参数列表中,声明参数列表最后面的值。params 关键字与数组一起使用。
例: public static long add(params int args)
main方法也可以接受不同数目的参数,但不需要在main方法中使用params关键字。标准做法如下:public static [int |void] main(string args)
15. 如果类变量是标准的、非静态变量,可以使用关键字this。例如,要访问类的数据成员x,使用避免与其他局部变量冲突。
16. 给构造函数加上限定符private实际上可以禁止创建对象。这个类就变成不能创建对象的类了。
17. 创建名称空间可以使用关键字namespace后面给标识该名称空间的名称。然后使用花括号将该名称空间包含的类型括起来。
例如:namespace consts
使用using关键字来使用名称空间以后,不必使用全限定名称了。
using还可以为名称空间提供别名。如:
using doit =
18. try 和catch
try 命令给**块加上包装(用花括号),帮助发送(route)任何可能发生的异常。
catch让您捕获try 命令发送的异常。
例如:catch( e)
″,e);可有多个catch语句,应该在前面捕获较具体的异常,后面捕获较通用的异常。
19. finally 语句不管try 语句是否执行成功,都会执行。
20. throw 关键字引发异常,并终止程序。可以用来作合法性检查。
throw(exception);
21. 引发自己的异常前要先声明它。
格式: class exceptionname:exception{}
其中, exceptionname以exception结尾。
用throw 引发:
throw(new mythreeexception())
/mythreeexception是自己声明的异常。
22. checked 将过大或过小的值赋给变量将引发异常;unchecked 将过大或过小的值赋给变量时,直接进行裁剪。
在编译器中最好设置, checked
23. 类的继承。
class derived_class:base_class
例如: class employee : person
24. 派生类的构造函数后加上冒号和base关键字,就可以调用基类的构造函数。
base()的括号中填入基类的构造函数的参数。
当基类的构造函数执行完毕后,将执行派生类的构造函数中的语句。
关键字base也可以用于直接调用基类的方法。
public new void displayfullname()
/displayfullname()是基类的方法。
/派生类中的新方法displayfullname先显示一行信息,然后调用基类的displayfullname方法。这样就可以扩展基类的功能而不用重写所有**。
派生类中的方法与基类的一个成员方法同名,而且使用了关键字new。那么该方法将覆盖基类中同名的方法。
25. 虚方法能够调用实际被赋给的对象所属类中的方法,而不是基类的方法。(以便实现多态性)
在基类的方法声明中使用关键字virtual。如果这种方法在派生类中被覆盖(overriddren),则在运行阶段,调用的将是变量实际所属类的方法,而不是其被声明的类的方法。这意味着可以使用基类来指向多个派生类,而调用相应的方法。
在派生类中同名的方法声明中使用关键字override。
c语言学习笔记
一元二次方程详解。不管我们写什么样的程序,首先要建起构架。c语言的构架是 include intmain void 我们首先需要把三个系数保存到电脑里面,怎么保存呢?我们会以变量的形式保存到电脑里面。比如说 inta 1 intb 2 intc 3 这个 的意思是赋值的意思,不是相等的意思。什么叫变...
C语言学习笔记
a.1.需要成对敲入的符号。2.文件名不要出现。号,否则无法生成。c或。cpp文件,所以不能编译和运行。3.分号 代表一个语句,只有一个 的语句是空语句,所以下面的 不会报错,但表示若条件成立只执行空语句,并且条件语句结束 if a b 等价于 if a b 空语句。4.格式化输出中,建议用 x输出...
C语言学习笔记
求余 求mod 运算符。变量命名规则 只能以字母数字下划线三种字符组成,且第一个字符必须为字母或下划线。scanf d a prindf d a c语言中,变量名是区分大小写的。int 范围 32768 32768 float的指数部分有8bit 2 8 由于是有符号型,所以得到对应的指数范围 12...