C#重点笔记

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类型的数据

  1. List在使用时候需要导入的using指令为using System.Collections.Generic;
    ArrayList在使用的时候需要导入的using指令为using System.Collections;

5.List属于泛型集合,ArrayList属于非泛型集合

ArrayList与List的区别主要是在于性能上

ArrayList属于非泛型其中存储的类型默认是Object的 所以在进行数据的存储以及遍历和输出的时候就会进行装
箱和拆箱的操作,而装箱和拆箱的操作是很耗费性能的。

而List作为泛型类 可以存储各种类型的资源在存储上是确定了具体的数据类型的,不需要进行装箱操作,从而
节省性能 ,所以通常在实际的引用当中都是使用List的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值