一、 垃圾回收

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天的更多相关文章

  1. Linux基础知识与基础命令

    Linux基础知识与基础命令 系统目录 Linux只有一个根目录,没有盘符的概念,文件目录是一个倒立的树形结构. 常用的目录功能 bin 与程序相关的文件 boot 与系统启动相关 cdrom 与Li ...

  2. java线程基础知识----线程基础知识

    不知道从什么时候开始,学习知识变成了一个短期记忆的过程,总是容易忘记自己当初学懂的知识(fuck!),不知道是自己没有经常使用还是当初理解的不够深入.今天准备再对java的线程进行一下系统的学习,希望 ...

  3. 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. ...

  4. 这些C++基础知识的基础知识你都学会了吗?

    一.C++基础知识 新的数据类型 C语言中的数据类型  C++中新的数据类型 思考:新的数据类型有什么好处?请看下面的代码:  可以见得:新的类型使整个程序更加简洁,程序变得易读易懂!这个就是bool ...

  5. Ceph基础知识和基础架构认识

    1  Ceph基础介绍 Ceph是一个可靠地.自动重均衡.自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储.块设备存储和文件系统服务.在虚拟化领域里,比较常用到的是Cep ...

  6. Ceph 基础知识和基础架构认识

    1  Ceph基础介绍 Ceph是一个可靠地.自动重均衡.自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储.块设备存储和文件系统服务.在虚拟化领域里,比较常用到的是Cep ...

  7. 算法导论 - 基础知识 - 算法基础(插入排序&归并排序)

    在<算法导论>一书中,插入排序作为一个例子是第一个出现在该书中的算法. 插入排序: 对于少量元素的排序,它是一个有效的算法. 插入排序的工作方式像许多人排序一手扑克牌.开始时,我们手中牌为 ...

  8. 集合框架基础知识-----java基础知识

    Java集合框架 :接口:Collection.List .Set. Map:实现类:ArrayList.LinkedList.Vector.HashSet.TreeSet.HashMap.HashT ...

  9. web前端基础知识- Django基础

    上面我们已经知道Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Sessi ...

  10. jQuery基础知识--Form基础(续)

    下拉框应用 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF ...

随机推荐

  1. Flume 远程写HDFS

    现在的需求是在一台Flume采集机器上,往Hadoop集群上写HDFS,该机器没有安装Hadoop. 这里的Flume版本是1.6.0,Hadoop版本是2.7.1. 把Hadoop集群的hdfs-s ...

  2. oneCMDB

    OneCMDB开源地址: http://www.oschina.net/p/onecmdb/, 官方网站:http://www.onecmdb.org/wiki/index.php?title=Mai ...

  3. 64 位 Ubuntu 下 android adb 不可用解决方法

    解决方案: 安装ia32-libs 在终端执行 sudo apt-get install ia32-libs 其间会提示所依赖的某些包不存在,直接 sudo apt-get 安装即可.

  4. DIOCP之DEMO-登陆验证设计(二)

    ECHOServer代码(不考虑粘包的处理): unit ufrmMain; interface uses Windows, Messages, SysUtils, Variants, Classes ...

  5. Ruby-Array数组

    1.创建数组 a=Array.new(6,obj=nil)  #=> [nil, nil, nil, nil, nil, nil] 设置默认值 a=Array.new(6)           ...

  6. The certificate used to sign “AppName” has either expired or has been revoked. An updated certificate is required to sign and install the application解决

    问题 The certificate used to sign "AppName" has either expired or has been revoked. An updat ...

  7. redis密码管理

    redis 默认密码是空,在应用中,通常需要设置redis的连接密码,可通过命名方式进行密码管理: 1.连接redis: [redis@hadooptest Downloads]$ cd redis- ...

  8. 使用Memcached提高.NET应用程序的性能

    在应用程序运行的过程中总会有一些经常需要访问并且变化不频繁的数据,如果每次获取这些数据都需要从数据库或者外部文件系统中去读取,性能肯定会受到影响,所以通常的做法就是将这部分数据缓存起来,只要数据没有发 ...

  9. html file控件选择文件后立即预览 js实现

    //上传图片后立即预览 file对象,图片容器id function showImg(fileObj,imgId) { var file=fileObj.files[0]; var r = new F ...

  10. win7下安装mysql

    (1)官网下载mysql: http://dev.mysql.com/downloads/mysql/ (2)解压后,进入到该目录下,将my-default.ini文件复制一份改名为my.ini 打开 ...