应该是这么理解~~
所有的C#代码是托管,但有一些unsafe的代码,比如对内存的操作等,是要释放资源的~~
个人的理解,不知对不对。

解决方案 »

  1.   

    用unsafe声明的可以使用指针,但他就是不托管的了么?
    请高手指教。
      

  2.   

    你不dispose,在程序结束时会自动释放资源
      

  3.   

    to bwx:这是帮助文档中的一段话:
    对于应用程序创建的大多数对象,可以依赖垃圾回收器自动执行必要的内存管理任务。但是,非托管资源需要显式清除。最常用的非托管资源类型是包装操作系统资源的对象,例如,文件句柄、窗口句柄或网络连接。虽然垃圾回收器可以跟踪封装非托管资源的托管对象的生存期,但却无法具体了解如何清理资源。创建封装非托管资源的对象时,建议提供必要的代码以清理公共 Dispose 方法中的非托管资源。通过提供 Dispose 方法,对象的用户可以在使用完对象后显式释放其内存。
      

  4.   

    1. No matter you use unsafe code or not, C# code is managed.
    2. IDisposable is only needed when you are using any unmanaged resources (E.g. When you are invoking APIs which create File Handles). In this case, you can free those resources (CloseHandle) in Dispose method.
      

  5.   

    在.NET里面除了C++.NET,其他的如C#,J#.VB.NET都不能生成非托管代码。
      

  6.   

    to qqchen79:
        精辟!
      

  7.   

    to gOODiDEA(无语):
        你的意思是C#中只有非托管资源,没有非托管代码吗?IDisposable用于处理非托管资源,代码仍然是托管代码?
    ps:
    .net帮助文档中的一段话:
    IDisposable 接口  [C#]
    定义一种释放分配的非托管资源的方法。