一、 垃圾回收

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. java应用死循环排查方法或查找程序消耗资源的线程方法(面试)

    今天遇到一个面试,怎么在一堆线程中查找一个死循环? 如果遇到线上应用cpu飙升,并出现OutOfMemery怎么办? 首先线上应用的jvm配置要养成良好的习惯,增加一下配置则可以在jvm发生 oom的 ...

  2. CentOS网络配置详解

    转载于CentOS中文站:http://www.centoscn.com/CentOS/2015/0507/5376.html一.配置文件详解 在RHEL或者CentOS等Redhat系的Linux系 ...

  3. CIDR-Address介绍

    CIDR是一种用二进制表示法来代替十进制表示法的新方法. IP地址有“类”的概念,/8掩码是A类,/16掩码是B类,/24掩码是C类等等.但是/12,/18,/25呢?这就是无类的概念了,CIDR的作 ...

  4. JS复习

    一.三个对话框1.alert("")警告对话框2.confirm("")确定对话框3.prompt("","")可输入内 ...

  5. RedHat下编译安装Boost

    1.解压boost_1_54_0.tar.gz 2.进入目录后,运行 ./bootstrap.sh ,会生成一个 bjam 的可执行程序 3.运行 ./bjam release install 进行编 ...

  6. PHP的OB缓存(输出缓存)

    使用PHP自带的缓存机制 原则:如果ob缓存打开,则echo的数据首先放在ob缓存.如果是header信息,直接放在程序缓存.当页面执行到最后,会把ob缓存的数据放到程序缓存,然后依次返回给浏览器. ...

  7. Python全栈--7.3--模块补充configparser--logging--subprocess--os.system--shutil

    模块补充: 一.configparser用于处理特定格式的文件,其本质是利用open来操作文件 继承到2版本 configparser 实现了更多智能特征,更有壳预见性,新的应用更偏好这个版本, 处理 ...

  8. 爬虫--scrapy--windows上安装

    关于scrapy的安装网上有一大把教程,但是比较麻烦,各种包----------,这里给大家介绍一款神器: 下载地址:http://continuum.io/downloads 根据自己电脑的系统选择 ...

  9. Python笔记——break的注意事项

    在python中有个控制流的语句:break 它是用来终止循环语句的,不管此时循环体进行到哪,只要碰到break都停止执行循环语句. 1.举例脚本: #!/usr/bin/env python for ...

  10. 高并发访问mysql时的问题(一):库存超减

    如果在对某行记录的更新时不采取任何防范措施,在多线程访问时,就容易出现库存为负数的错误. 以下用php.mysql,apache ab工具举例说明: mysql表结构 CREATE TABLE `yx ...