文章目录
1、值类型与引用类型以及区别
值类型:
1、整形:byte(字节) short(短整形) int (基本形) long(长整形
2、 浮点型:float(单精度) double(双精度)
3、布尔型:bool
4、字符型:char
引用数据类型:
string(字符串) 数组 类 接口 object 委托
1、值类型和引用类型的区别
1.值类型存储在内存栈中,引用类型数据存储在内存堆中,而内存单元中存放的
是堆中存放的地址。
2.值类型存取快,引用类型存取慢。
3.值类型表示实际数据,引用类型表示指向存储在内存堆中的数据的指针和引用。
4.栈的内存是自动释放的,堆内存是.NET 中会由 GC 来自动释放。
5.值类型继承自 System.ValueType,引用类型继承自 System.Object。
2、while循环和do~while循环的区别
1.语法不同。while是先判断再执行,do~while是先执行再判断
2.执行次序不同
3.初始情况不满足循环条件时
(1)while循环一次都不会执行
(2)do~while循环不管任何情况都至少执行一次
3、对比 break 和 continue
1.使用场合
(1)break常用于switch结构和循环结构中
(2)continue一般用于循环结构中
2.作用(循环结构中)
(1)break语句终止某个循环,程序跳转到循环块外的下一条语句
(2)continue跳出本次循环,进入下一次循环
4、局部变量和成员变量的区别
1.作用域不同
局部变量的作用域仅限于定义它的方法
成员变量的作用域在整个类内部都是可见的
2.初始值不同
系统会给成员变量一个初始值
系统不会给局部变量赋予初始值
5、静态变量和实例变量两者的区别
1、静态变量在内存中只有一个内存空间,在加载类的过程中完成静态变量的内存分配;每创建一个新的实例对象,
就会为实例变量分配不同的内存
2、静态变量可以直接通过类名来访问,实例变量需要通过各个对象访问
3、创建多个对象时,用static修饰的变量共享一个内存空间;没有用static修饰的变量不共享内存空间。
6、this的用法
1、当成员变量和局部变量同名时,如果想调用成员变量,用this
2、当构造方法互相调用时,用this
7、面对对象的三大特点
封装、继承、多态
1.继承: 提高代码重用度,增强软件可维护性的重要手段,符合开闭原则。
2.封装: 封装是将数据和行为相结合,通过行为约束代码修改数据的程度,增强数据的安全性,属性是C#封装
实现的最好体现。
3.多态性: 多态性是指同名的方法在不同环境下,自适应的反应出不同得表现,是方法动态展示的重要手段。
8、封装的好处
1、隐藏类的实现细节
2、只能通过规定属性访问数据
3、方便加入控制语句
4、方便修改实现
9、继承的好处
解决功能重复问题
10、静态多态和动态多态
(1)静态多态
方法重载(例如多个构造方法)
(2)动态多态两个要素(重写+向上转型)
1、子类重写父类方法
2、使用父类的类型(子类转换为父类:向上转型)
11、使用多态的好处
解决:对重复代码频繁修改
1.可替换性。多态对已存在代码具有可替换性。
2.可扩充性 。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性, 以及其他特性的
运行和操作。
3.接口性。多态是超类通过方法签名, 向子类提供了一个共同接口, 由子类来完善或者覆盖它而实现的。
4.灵活性。它在应用中体现了灵活多样的操作, 提高了使用效率。
5.简化性。多态简化对应用软件的代码编写和修改过程, 尤其在处理大量对象的运算和操作时, 这个特点尤为
突出和重要。
12、虚方法和一般方法的区别
1、写法不同
2、一般方法在编译时就静态地编译到了执行文件中,其相对地址在程序运行期间是不发生变化的,也就是写死的!
而虚方法在编译期间是不被静态编译的,它的相对地址是不确定的,它会根据运行时期对象实例来动态判断要
调用的方法。
13、简述private、public、protected、internal的区别
public:对任何类和成员都公开,无限制访问
private:仅对该类公开
protected:对该类和其派生类公开
internal:只能在包含该类的程序集中访问该类
protected internal:protected + internal
14、抽象类和接口的区别
15、重载和重写的区别
- 所处位置不同,重载在同类中,重写在父子类中
- 定义方式不同,重载方法名相同 参数列表不同,重写方法名和参数列表都相同
- 调用方式不同,重载使用相同对象以不同参数调用,重写用不同对象以相同参数调用
- 多态时机不同,重载时编译时多态,重写是运行时多态
16、ArrayList和List的区别
1.list性能较高,ArrayList性能较低
2.list一次存储中只能存储泛型中的类型,ArrayList在一次存储中任何类型的数据
3.List中获取值取出的是泛型中发的类型,因为ArrayList对元素没有限制,系统会将中获取的值当object类型的数据
- List在使用时候需要导入的using指令为using System.Collections.Generic;
ArrayList在使用的时候需要导入的using指令为using System.Collections;
5.List属于泛型集合,ArrayList属于非泛型集合
ArrayList与List的区别主要是在于性能上
ArrayList属于非泛型其中存储的类型默认是Object的 所以在进行数据的存储以及遍历和输出的时候就会进行装
箱和拆箱的操作,而装箱和拆箱的操作是很耗费性能的。
而List作为泛型类 可以存储各种类型的资源在存储上是确定了具体的数据类型的,不需要进行装箱操作,从而
节省性能 ,所以通常在实际的引用当中都是使用List的。