【基础知识】.Net基础加强06天
一、 垃圾回收
1. 垃圾回收的目的:提高内存的利用效率。
2. 垃圾回收器: 只回收托管堆中的内存资源,不回收其他资源(数据库连接、文件句柄、网络端口等);
3. 什么时候垃圾回收?
a) 当对象没有任何变量指向的时候就可以被垃圾回收了。(可以被回收,但是不知道什么时候可以回收,回收是由系统决定的
b) GC.Collect(); //手动调用垃圾回收(一般不需要手动调用垃圾回收,由系统自动调用)
c) 不要手动调用,因为垃圾回收会调用一系列的算法,需要移动对象等等,这时为了达到目的,需要暂停应用程序的已处理,这时如果频繁的调用垃圾回收反而会影响性能。
4. 垃圾回收器中的“代”的概念
a) 垃圾回收中的代有三代:
i. 回收的时候优先回收第0代,没有回收的移动到第一代,第一代和第二代要倒满的时候才能回收。
b) 垃圾回收采用代的概念,避免了每次垃圾回收都遍历所有的对象,减少了垃圾回收的时间。
第0代的回收频率高,第1代次之,第2代再次之。
效果:越老的对象活的越长。
5. 除了内存资源之外的其他资源。
a) 使用Dispose();释放除内存之外的方法。
b) ~Class1(){}//析构函数(c++中的名称)在C#中叫Finalize()函数(终结函数)
与类名相同
在当前对象被垃圾回收之前会调用Finalize()函数,释放其他资源。
6. 弱引用:WeakReference,对于创建比较耗时的对象可以使用若引用
什么时候使用弱引用:一般用在创建比较耗时的对象。
二、 集合类
1. ArrayList(非泛型) –> List<T>(泛型)
Hashtable(非泛型)--->Dictionary<K,V>(泛型)
2. 数据的特点:类型统一、长度固定
3. 集合的常用操作:添加、遍历、移除
4. ArrayList集合:
a) ArrayList arr = new ArrayLlist();
Arr.Count//实际的个数(属性)
Arr.Capacity;容量。集合的容量是递增翻倍,初始容量是4(属性)
Arr.TrimToSize();//将总容量“收缩”为实际容量
5. Hashtable键值对集合,类似于字典,
键的地址是算出来的,所以高性能。
• Hashtable 键值对的集合,类似于字典,Hashtable在查找元素的时候,速度很快。
• Add(object key,object value);
• hash[“key”]
• hash[“key”]=“修改”;
• .ContainsKey(“key”);
• Remove(“key”);
• 遍历:
• hash.Keys
• hash.Values/DictionaryEntry
• 键值对集合中的“键”,绝对不能重复。
三、 泛型集合(在.Net2.0之后出现的)
1. 通过泛型可以限定集合中存储的类型
2. List<int> list = new List();
a) 由于增加的时候都是int 类型,所以取值的时候获取的值直接就是int 类型,无需类型转换。
b) 微软推荐使用List<T>泛型集合,他是ArrayList的升级版
3. Dictionary<string,string> dict = new Dictionary<string,string>();
a) 用这个来替换Hashtable
b) 遍历:foreach(KeyValuePair<T,T> kv in dict)//可以将key和value一起遍历出来
四、 Var关键字简述(是一个强类型,在程序编译的时候就已经替换成相应的数据类型)
类型推断
注:在JavaScript中的var是一个弱类型
【基础知识】.Net基础加强06天的更多相关文章
- Linux基础知识与基础命令
Linux基础知识与基础命令 系统目录 Linux只有一个根目录,没有盘符的概念,文件目录是一个倒立的树形结构. 常用的目录功能 bin 与程序相关的文件 boot 与系统启动相关 cdrom 与Li ...
- java线程基础知识----线程基础知识
不知道从什么时候开始,学习知识变成了一个短期记忆的过程,总是容易忘记自己当初学懂的知识(fuck!),不知道是自己没有经常使用还是当初理解的不够深入.今天准备再对java的线程进行一下系统的学习,希望 ...
- day63:Linux:nginx基础知识&nginx基础模块
目录 1.nginx基础知识 1.1 什么是nginx 1.2 nginx应用场景 1.3 nginx组成结构 1.4 nginx安装部署 1.5 nginx目录结构 1.6 nginx配置文件 1. ...
- 这些C++基础知识的基础知识你都学会了吗?
一.C++基础知识 新的数据类型 C语言中的数据类型 C++中新的数据类型 思考:新的数据类型有什么好处?请看下面的代码: 可以见得:新的类型使整个程序更加简洁,程序变得易读易懂!这个就是bool ...
- Ceph基础知识和基础架构认识
1 Ceph基础介绍 Ceph是一个可靠地.自动重均衡.自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储.块设备存储和文件系统服务.在虚拟化领域里,比较常用到的是Cep ...
- Ceph 基础知识和基础架构认识
1 Ceph基础介绍 Ceph是一个可靠地.自动重均衡.自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储.块设备存储和文件系统服务.在虚拟化领域里,比较常用到的是Cep ...
- 算法导论 - 基础知识 - 算法基础(插入排序&归并排序)
在<算法导论>一书中,插入排序作为一个例子是第一个出现在该书中的算法. 插入排序: 对于少量元素的排序,它是一个有效的算法. 插入排序的工作方式像许多人排序一手扑克牌.开始时,我们手中牌为 ...
- 集合框架基础知识-----java基础知识
Java集合框架 :接口:Collection.List .Set. Map:实现类:ArrayList.LinkedList.Vector.HashSet.TreeSet.HashMap.HashT ...
- web前端基础知识- Django基础
上面我们已经知道Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Sessi ...
- jQuery基础知识--Form基础(续)
下拉框应用 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF ...
随机推荐
- JS --正则表达式验证、实战之邮箱模式
JS验证格式:提高用户体验,验证文本. 需要防止程序员的代码结构更改攻击,因为web段的代码有可能会被更改,更改后JS有可能会验证不住那么,C#端在JS段通过验证的情况下,还需要进行二次验证 < ...
- PHP性能优化简述
先谢慕课网,这里只做理论简述/** * PHP性能优化 * * 1.问题分析 * PHP语法使用不正确 * PHP不擅长的事 * PHP连接的服务不给力 * PHP自身短板 * 其它原因 * 2.PH ...
- JQuery中$(document)是什么意思有什么作用
$(document).ready(fn):当DOM载入就绪可以查询及操纵时绑定一个要执行的函数,因为它可以极大地提高web应用程序的响应速度 首先我解释一下jQuery jQuery有一个用来作为D ...
- P1159岳麓山上打水
P1159岳麓山上打水 https://vijos.org/p/1159 dfsID,第一次听说这东西,但是感觉不太靠谱啊. 一开始的时候,想到了排个序后,然后进行dp,如果要输出字典序最小其实还是可 ...
- MYSQL存储过程:批量更新数据
地区等级的信息储存在jsjh_district表. 要更新jsjh_goods_district表的district_level地区信息 DELIMITER $$ DROP PROCEDURE IF ...
- WPF 获得鼠标相对于屏幕的位置,相对于控件的位置
相对于屏幕的位置 第一步: /// <summary> /// 用于获得鼠标相对于屏幕的位置 /// </summary> public class Win3 ...
- iOS.AppThinning-iOS9-new-feature-for-app-thinning-bitcode-odr-slicing
Bitcode 0. Introduction to Bitcode 1. Build static library or framework via Xcode 7, while user buil ...
- 如何正确接收 GitHub 的消息邮件
背景 我厂的开发流程通常都是基于 GitHub 的.在 GitHub 上 review 代码,也是我日常工作的重要组成部分.对我来说,在 code review 过程中最讨厌的莫过于,我在 pull ...
- PyMongo下载及安装
PyMongo最新版本下载地址: http://pypi.python.org/pypi/pymongo/#downloads PyMongo旧版本下载地址: http://pypi.python.o ...
- 解决ubuntu bash: cd: ~:Permission denied
cd /usr/local/hadoop 报错:bash: cd: /usr/local/hadoop:Permission denied 输入指令: /usr/local/hadoop 原因是没有权 ...