`
sosopro
  • 浏览: 13905 次
  • 性别: Icon_minigender_1
  • 来自: 云南
最近访客 更多访客>>
社区版块
存档分类
最新评论

c#学习---using

阅读更多

c#里using除了引用程序集,例如:

 

 

using System;
using System.Collections.Generic;
 

 

还有1个重要的用法:

 

 

我们都知道system.object里有Finalize()是虚函数,在GC进行垃圾回收的时候用到,一般我们都不用自己显示的清理逻辑,但是只是一般情况下,自然就想到了override Finalize()。

 

{
     protected override Finalize()
      {
             //do something
      }
}

 但是c#不允许这样做,很奇怪。我们只能增加析构函数:

 

 class a
    {
        
        ~a()
        {
            Console.WriteLine("I am dead!");
        }
    
        
    }

 更有一种情况,如果你的类类型是可处置的,也就是支持IDisposable接口时,可以调用Dispose()。

 

class a : IDisposable
{
     public void Dispose()
     {
          //清楚非托管资源。。。。
         // and something else
      }
}

 当然最好判断下目前类型是否支持IDisposable

 

。。。。
if (a is IDisposable)
     a.Dispose();

 在处理实现了IDisposable时我们一般使用结构化的异常处理来保证Dispose()调用:

 

try
{
   //使用a成员
}
finally
{
   a.Dispose();
}

 显然这样做要把每个可处置的类型包含在try/finally里,不是很让人接受,于是就有了using的另一用途:

 

using(a  mya=new a())
{
    //使用mya对象
}

 虽然在CIL代码里还是try/finally,但我们的代码编写和阅读更让人接受。

分享到:
评论
1 楼 ganker00cc 2010-11-05  
楼主解得很精华。
c#我才刚学,想问是不是using语句使得()内被使用的对象具有了类似生存周期的属性,然后系统就自动在}后释放掉了?

相关推荐

    C#实验--- A.3 矩阵并行计算练习

    在计算机科学中,矩阵运算广泛应用于图像处理、物理学模拟、机器学习等多个领域。 C#中的并行计算主要通过.NET Framework的System.Threading命名空间和System.Threading.Tasks命名空间来实现。Task类是异步并行计算...

    C#教程------经典版

    随着学习的深入,你将掌握更复杂的概念,如接口、异常处理、文件操作、数据库交互以及图形用户界面(GUI)编程等。C#的强大之处在于它的灵活性和广泛的应用场景,无论是桌面应用、游戏开发还是云计算服务,都能找到...

    C# Mel-Spectrogram 梅尔频谱 源码

    通过学习和理解这段源码,开发者不仅可以掌握音频处理的基本原理,还能了解到如何在C#环境中有效利用这些原理。这对于开发音频相关的应用程序,如语音识别、音乐分析、噪声消除等,都是极其有价值的。 此外,博客...

    C# -- 完全手册

    C# 9引入了模式匹配、目标类型推断(using var)等新特性,让代码更加简洁和易读。 在实际项目中,理解并运用设计模式是提升代码质量的关键。书中的实例和案例将展示如何在C#中实现常见的设计模式,如工厂模式、...

    C#教程-unprotected

    - **简洁性:** C# 的语法简洁明了,易于学习和使用。 - **性能:** C# 通过CLR提供了高性能的执行环境,支持即时编译(JIT)技术,提高了程序的运行效率。 - **兼容性:** C# 可以与其他 .NET 语言无缝集成,便于...

    C#实现字符串SHA-256加密算法

    在IT领域,安全性和数据保护是至关重要的,而加密技术是保障这些方面的重要手段之一。...在C#编程环境中,实现SHA-256加密算法...通过实践和深入学习,您可以更好地理解和应用这些加密机制,为您的IT职业生涯增添亮点。

    c#--提醒程序,可设置提醒计划事件

    通过分析和学习这个源码,你可以更深入地理解C#中事件、定时器和时间管理的使用方式,以及如何将它们应用到实际项目中。 总的来说,构建一个C#提醒程序涉及了C#的基础语法、时间处理、事件机制和用户交互等多个方面...

    C#---相片重命名(简易)

    在IT行业中,编程语言C#是一种广泛用于开发桌面应用、Web应用和移动应用的强大工具。在C#中处理文件操作,如重命名照片文件,是常见的任务,尤其在...对于初学者来说,理解并掌握这些基础操作是学习C#编程的重要一步。

    Programming Microsoft Visual C# 2005 - The Language

    通过学习《编程Microsoft Visual C# 2005 - 语言篇》,开发者将能掌握C#的基础知识,为构建Windows桌面应用、Web应用以及更复杂系统打下坚实基础。书中的实例和练习有助于读者理解和实践这些概念。随着C#版本的不断...

    C#7-C#10的开发帮助文档.pdf

    《C#7至C#10的开发帮助文档》提供了全面的C#语言学习资源,涵盖了从基础到高级的各种主题。以下是对文档主要内容的详细解释: 1. **入门与简介**: - C#是一种面向对象的编程语言,由微软公司开发,主要用于.NET ...

    C#教程--全面了解C#

    ### C#教程--全面了解C# #### C#语言概述 **C#** 是一种现代、面向对象且类型安全的编程语言,由...通过学习本文档中提到的各种概念和技术,您将能够掌握C#编程的基础知识,并为进一步的学习和发展打下坚实的基础。

    C#346-驱动管理源代码

    在IT领域,驱动管理是操作系统核心功能之一,它负责与硬件设备进行通信,确保系统能够正确识别和使用各种硬件资源。...通过学习和使用这些源代码,开发者可以深入理解驱动管理的原理,提高系统级编程的能力。

    C#串口-WINFORM

    通过学习和理解这个示例,开发者可以快速掌握C#中的串口通信技术,并将其应用到自己的项目中。 总之,C#串口-WINFORM的结合使得开发者能构建功能强大的桌面应用,它们可以与各种串口设备进行交互,如传感器、打印机...

    通俗易懂的c#课件-C#入门级课件

    本课件旨在为初学者提供一个通俗易懂的C#学习路径,帮助他们快速入门并掌握C#的基础知识。 1. **C#简介** C#(读作"C sharp")是2000年代初推出的一种强类型、面向对象的语言,设计初衷是为了简化.NET框架的应用...

    C#课件-C#基本语法

    它提供了直观的语法结构,易于理解和学习。面向对象编程是C#的另一个重要特征,支持类、接口、封装、继承和多态等概念。类型安全是C#的重要特性,它能够防止程序运行时出现意外的数据类型错误。版本可控性意味着C#...

    C#413-非矩形窗体

    而压缩包文件列表中提到的"C#413-非矩形窗体"可能是包含整个项目或源代码的文件,供学习者参考和实践。 总的来说,实现非矩形窗体需要对C#的Windows Forms和GDI+有深入理解,包括自定义绘图、消息处理以及图形对象...

    C#358-运行应用程序,源代码

    在IT领域,C#是一种广泛使用的面向对象的编程语言,由微软公司开发并应用于Windows平台。本主题聚焦于"C#358-运行应用程序",这可能是指一...在实际学习中,通过实践和分析提供的源代码,可以深入理解这些概念和机制。

    C#381-显示器控制源代码

    在本文中,我们将深入探讨与"C#381-显示器控制源代码"相关的知识点,主要集中在C#编程语言如何操纵显示器设置,以及可能涉及到的技术和方法。显示器控制通常包括调整屏幕亮度、分辨率、颜色设置等,这些功能在现代...

    21天学通C#---已附有阅读软件

    学习C#,你需要了解以下几个关键知识点: 1. **基础语法**:包括变量、数据类型(如整型、浮点型、字符串、布尔型等)、运算符(算术、比较、逻辑等)、流程控制(如条件语句、循环语句)。 2. **面向对象编程**:...

    C#程序-计算器

    对于初学者来说,创建一个计算器是学习C#基础知识的好方法,因为它涉及到变量、运算符、控制流程以及用户交互等核心概念。 首先,我们需要了解C#的基本语法。在C#中,每个程序都始于`main`函数,这是程序执行的起点...

Global site tag (gtag.js) - Google Analytics