C#数组、结构和类学习

来源:互联网 发布:python递归函数怎么写 编辑:程序博客网 时间:2024/05/17 03:17

1 在C#中,可以定义二维动态数组,这在C中是不允许的。

数组、List和ArrayList的区别

参考:http://www.cnblogs.com/a164266729/p/4561651.html

Array和ArrayList之间的区别

转载http://blog.csdn.net/yangwenxue_admin/article/details/44537175

2 C#中没有全局变量的概念,可以通过类中的静态成员来实现全局访问。

3 属性和字段的应用场合?

把所有的字段都设置为私有字段,如果要暴露它们,则把它们封装成属性,这也是微软推荐的方式。

4 C#的默认访问权限

(1)在namespace中的类、接口默认是internal类型的,也可以显示的定义为public类型,不允许是其他访问类型。

(2)在一个类里面,属性和方法默认是private的,可以显示的定义为public、private、protected、internal或protected internal等访问类型。

(3)接口中不能定义成员变量,接口中的方法默认为public的访问权限,但是不能显示的定义任何访问类型。

(4)抽象类中必须有一个以上的抽象方法,抽象方法可以是public、internal、protected,不能是private的访问类型。

5 结构作为一种值类型,为什么可以使用new来初始化结构,这与引用类型的new有什么不同?

引用类型:myClass mc=new myClass(); //引用类型new的指令实际是newobj instance。功能是分配内存空间,将新实例中的所有字段初始化为0或空引用,再调用构造函数,最后返回空间地址 (newobj用于分配和初始化对象)

值类型: int i=new int();  //值类型是执行initobj指令。功能是将位于指定地址的对象的所有字段初始化为空引用或适当的基元类型的0 。与Newobj不同,构造函数不是由initobj调用,而是系统自动调用 (Initobj用于初始化值类型)

值类型的new操作是不执行分配内存操作的,其new操作只执行初始化数据操作,调用构造函数(非initobj调用,是系统自动调用)。所以微软关于new关键字的用途的说法是不全面的。因为new还有一种只初始化数据,调用构造函数而不在托管堆分配内存的功能。

转自:http://blog.csdn.net/rommi/article/details/5675339

6 internal的访问范围指的是同一个程序集。

7 C#类只支持单继承,这是与C++不同的地方。

8 结构体和类的默认访问权限为internal。

9 C#中,继承、虚方法和重写方法组合在一起才能实现多态性。


0 0