C#之各类异同
C#中很多内容之间存在异同点,今天我就把我总结的一些分享给大家。^_^
1.Array与ArrayList的异同
在C#中Array一旦被new后其长度(Length)时被固定了不能再进行改变的,而ArrayList的元素个数(Count)是可以被再次改变的(动态数组),元素可以随意添加、插入、删除,不必考虑是否溢出的情况。ArrayList尽管扩充了Array的功能,但是缺点也很明显:ArrayList只能是一维的,而Array可以是多维的;ArrayList下标必须从0开始,并且其执行效率比Array效率低一些。
2.readonly字段与const常量的异同
相同点:都是只能被读无法被修改。
不同点:const成员的值要求在编译时能进行计算,而readonly字段要到运行时才能给出,一旦赋值就不能改变(通过构造函数进行赋值)。
3.属性与字段的异同
相同点:属性与字段都用来表示事物的状态。
不同点:属性可以设置读写(只读(get)/只写(set)),而字段不可以设置,并且属性的set方法可以对用户值进行有效性检查(赋予的值是否与定义的类型相同)。
4.ref参数与out参数的异同
相同点:不管是值类型还是引用类型都可以用ref与out关键字来实现参数的按引用传递,而且参数必须显式传递与调用。
不同点:ref型参数在被传递前必须进行初始化,而out参数是作为输出,在函数被调用之前无需对其传递的参数进行初始化。
5.静态方法与非静态方法的区别
静态方法:用static修饰的方法为静态方法,静态方法属于类,而且静态方法只能访问类中的静态成员,通过类名直接调用。
非静态方法:没有用static修饰的方法都属于非静态方法,非静态方法可以访问类中的任何成员,属于对象,通过类实例化的对象进行调用。