zoukankan      html  css  js  c++  java
  • C#6

    CLR的一个核心功能:垃圾回收。
    垃圾回收的目的:提高内存利用率。
    垃圾回收器,只回收托管堆栈中的内存资源,不回收其他资源(数据库连接、文件句柄。网络端口等)。
    什么样的对象才会被回收?:没有变量引用的对象。
    什么时间回收?:不确定,但是也可以手动调用垃圾回收器:GC.Collect();但是不建议使用。调用效率低~
    垃圾回收器中“代”的概念:
    共3代:第0代、第1代、第2代。
    各代的回收频率:第0代最高,其次第1代,再次第2代。也就是说越老的对象生存几率越大。

    (c++中叫析构函数)c#叫Finalize函数:~类名(){方法体;}。在当前对象被垃圾回收之前会调用这个函数释放其他资源。这个是不能手动调用的。因为Disposable();方法是手动释放资源的,所以内部有GC.SuppressFinalize(this),这个函数表示不再调用Finalize();了。

    弱引用:WeakReference wk=new WeakReference(需要弱引用的对象的变量);通过object 变量名A=wk.Target这个属性返回boject类型来找回之前弱引用的对象。记得判断if(这个变量A==NULL)在进行强转。
    =================================================================================================================
    非泛型集合:ArrayList可变长度数组,使用类似于数组。Hashtable键值对的集合类似于字典,在查找元素的时候,速度很快。

    ArrayList
    例子:ArrayList A=new ArrayList();A.Count长度A.Capacity容量
    1.ArrayList:.Count属性,表示实际元素个数。
    .Capacity属性表示当前集合容量且这个容量每次2的次方增长扩展的。
    .Add(object a)向集合中增加元素。
    .RemoveAt(int i)其中i为索引这个方法是删去但前索引为i的值。 通过这个方法去除元素,这个集合的容量是不会变小的。
    .TrimToSize();通过这个方法可以收缩总容量到实际容量。
    .AddRange(ICollection a):向集合中加入一个数组。
    .Remove(object a):删除的时候是判断的是否是同一个对象,如果是传进来的a和集合中的某个元素为同一个对象则这个元素被删除。调用的是Equals方法所以如果两个字符串一样不是同一对象也会被删除。
    .ToArray():转成object[]数组。

    Hashtable
    例子:Hashtable A=new Hashtable();
    .Add(boject key,boject value):向键值对中增加元素。
    ["key"]取值。
    .ContainKey("key"):判断是否包含key。
    .Remove("key"):根据键key来删除。
    通过foreach(DitionaryEntry item in A)来遍历键item.Key和值item.Value。
    通过foreach(var item in A.Key)遍历键item。
    通过foreach(var item in A.Values)遍历值item。

    =================================================================================================================

    泛型集合:List<数据类型>和Ditionary。

    List<数据类型>
    例子:List<int> list=new List<int>();通过泛型限定了集合中存储的数据的类型。取出来的数据list[i]直接为int类型。list.ToArray()直接为int[]类型。
    .Max() .Min() .Sum() .Average()

    Dictiongary<键的数据类型,值的数据类型>
    例子:Ditionary<string,string> dict=new Dictionary<string ,string>();
    通过foreach(var item in dict.Key)遍历键item。
    通过foreach(var item in dict.Values)遍历值item。
    通过foreach(KeyValuePair<string,string> item in A)来遍历键item.Key和值item.Value。

    =================================================================================================================

    var:强类型,类型推断。推断后为什么类型编译后就为什么类型。

  • 相关阅读:
    【项目】项目75
    【项目】项目74
    【项目】项目73
    【项目】项目72
    【项目】项目71
    【项目】项目70
    【项目】项目69
    【项目】项目68
    【项目】项目67
    .Net随笔:解决VS2008,重新生成解决方案,很慢
  • 原文地址:https://www.cnblogs.com/holong2003/p/3265715.html
Copyright © 2011-2022 走看看