小学生学C#

工作一年辛辛苦苦学习2年,一直没有时间梳理一下自己的知识,最近花一些时间整理一下C#基础知识,也算是对过去一个回顾

值类型和引用类型 -------堆和栈 —装箱和拆箱
接口和抽象类
封装,继承,多态
迭代器
泛型
集合 —一般集合 ----泛型集合
反射
特性(Attribute)
委托和事件
线程
六种异步方式 --委托异步模型 --基于IAsyncResult接口模型–事件驱动模型–BackgroundWorker组建模型 --创建线程模型 --线程池模型
LINQ
IO操作
File操作
代码整洁知道
const和readonly
is和as
运算符和类型转化操作重载
ToString方法
数据实体模型(Tuple)以及匿名类型
String和StringBuilder详解
值类型和引用类型
1.1堆和栈
简单的说值类型存放在堆栈上面,引用类型的数据存放在托管堆上面(它的引用地址却存放在堆栈上面)
栈:它是一个内存数组,是一个先进后出的数据结构
栈的特征:数据只能从栈顶进,从栈顶出
堆:它是一个内存区域,可以分配大块区域存储某类型的数据,与栈不同的是它里面的数据可以任意排序和移除
问题 值类型 引用类型
这个类型分配在哪里 分配在栈上 分配在托管堆上
变量是怎么表示的 值类型变量是局部复制 引用类型变量指向被分配得实例所占得内存
基类型是什么? 必须继承自System.ValueType 可以继承自除了System.ValueType以外的任何类型,只要那个类型不是sealed的
这个类型能作为其他类型的基类么 不能 值类型是密封的 不能被继承 是的,如果这个类型不是密封的,他可以作为其他类型的基类
默认的参数传递是什么? 变量是按值传递的(也就是 一个变量的副本被传入被调用) 变量是引用传递 (例如,变量的地址传入被调用的函数)
这个类型能重写System.Object.Finalize()么 不能 值类型不好放在腿上因此不需要被终结 可以间接的重写
我可以位这个类型定义构造函数吗? 是的,但是默认的构造函数被保留(也就是自定义构造函数必须全部带有参数) 当然
这个类型的变量什么时候消亡? 当它们越出定义的作用域时,当托管堆被垃圾回收时
面向对象思想:多态
接口 抽象类
1引言
接口是包含一组虚方法的抽象类型,其中每一种方法都有其名称、参数和返回值。接口方法不能包含任何实现。CLR接口可以包含事件、属性、所引起、静态方法、静态字段、静态构造函数以及常熟。但是注意:
C#中不能包含任何静态成员。一个类可以实现多个接口,当一个类继承某个接口时,它不仅要实现该接口定义的所有方法,还要实现该接口从其他接口中继承的所有方法
定义方法为
什么事抽象类
抽象类提供了多个派生类共享基类的公共定义,它既可以提供抽象方法,也可以提供非抽象方法
抽象类不能实例化,必须通过继承由派生类实现抽象方法,因此对抽象类不能使用new关键字,也不能被密封 如果派生类没有实现所有的抽象方法,则该派生类也必须声明为抽象类。另外,实现抽象方法由overriding方法来实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值