黑马程序员技术交流社区

标题: C#基础中较易迷惑的概念小结 [打印本页]

作者: 刘亚龙    时间: 2012-12-6 08:45
标题: C#基础中较易迷惑的概念小结
结构型和类的区别:
(1)结构型是值类型,类是引用型,因此使用结构型定义变量可以不使用new运算符来初始化,而使用类定义的变量必须使用new运算符来初始化(2)结构型可以实现接口,但无法继承另一个结构型,因此不需要使用protected来保护结构型的成员,而类也可以实现接口,允许继承另一个类,为此可以使用protected保护类成员。

值类型和引用类型的区别:
值类型变量一经定义系统就会为其分配内存空间并自动初始化,而引用型变量必须使用运算符new和构造函数创建,这样才会获得内存空间和被初始化。

方法的参数有4种类型:
1. 值类型参数:调用方向方法传递值类型参数时,被调用方所接收到的只是实参数据值的一个副本。
2. 引用型参数:调用方向方法传递引用型参数时,调用方将实参变量的引用赋给相对应的形参变量。由于使用return语句一次只能返回一个数据值,如果需要返回多个数据,可以利用引用型参数来实现。
C#通过ref关键字来声明引用参数,无论是形参还是实参,都必须添加ref关键字。
3. 输出参数:使用引用型参数可以使方法中返回多个结果,但要求先初始化实参。而输出参数不需要对实参进行初始化,它专门用于把方法中的数据通过形参返回给实参,不会将实参的值传递给形参。
C#通过out关键字来声明输出参数,无论是形参还是实参,都必须添加out关键字。
4. 数组型参数:把数组作为参数,有两种使用形式:一是在形参数组前不添加params修饰符,另一种是添加该修饰符。不添加params修饰符时,所对应的实参必须是一个数组名;添加该修饰符时,所对应的实参可以是数组名,也可以是数组元素值的列表。

静态类
静态类使用static关键字来声明,以指示它仅包含静态成员,不能使用new关键字创建静态类的实例。在实际应用中,当类中的成员不与特定对象关联的时候,就可以把它创建为静态类。
静态类功能如下:
(1) 静态类仅包含静态成员;
(2) 静态类不能被实例化;
(3) 静态类是密封的;
(4) 静态类不能包含实例构造函数
由于静态类是密封的,因此不可被继承。静态类不能包含实例构造函数,但仍可声明静态构造函数,以分配初始值或设置某个静态状态。

抽象类与接口的区别:
抽象类是一种不能实例化的类,抽象类可以包含抽象成员,也可以包含非抽象成员,即抽象类可以是完全实现的也可以是部分实现的,或者完全不实现的。抽象类可以用来封装所有派生类的通用功能。
接口顶多像一个完全没有实现的只包含抽象成员的抽象类,因此无法使用接口来封装所有派生类的通用功能,接口更多的用来指定程序设计开发规范,接口的代码实现由开发者完成。

索引器与属性的比较
索引器与属性都是类的成员,语法上非常相似。索引器一般用在自定义的集合类中,通过使用索引器来操作集合对象就如同使用数组一样简单;而属性可用于任何自定义类,它增强了类的字段成员的灵活性。
两者的不同:
属性:1.允许调用方法,如同公共数据成员2.可通过简单的名称进行访问3.可以为静态成员或实例成员4.get访问器没有参数5.set访问器包含隐式value参数
索引器:1.允许调用对象上的方法,如同对象是一个数组2.可通过索引器进行访问3.必须为实例成员4.get访问器具有与索引器相同的形参表5.set访问器除了value参数外,还具有与索引器相同的形参表

作者: 许庭洲    时间: 2012-12-6 22:05
值得学习ing!
作者: 张安康    时间: 2012-12-6 22:46
我也是在这里有点乱
作者: dbqwaii    时间: 2012-12-8 12:07
看了以后觉得  对新人学习概念的迷惑 有帮助




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2