using的一点点认识

概述

定义一个范围,将在此范围之外释放一个或多个对象

当做别名(命名空间)

当做try-finally处理

三种方式

using指令

using + 命名空间名字,这样可以在程序中直接用命令空间中的类型,而不必指定类型的详细命名空间,类似于Java的import,这个功能也是最常用的,几乎每个cs的程序都会用到。

例如:using System; 一般都会出现在*.cs中。

using别名

using + 别名 = 包括详细命名空间信息的具体的类型。

这种做法有个好处就是当同一个cs引用了两个不同的命名空间,但两个命名空间都包括了一个相同名字的类型的时候。当需要用到这个类型的时候,就每个地方都要用详细命名空间的办法来区分这些相同名字的类型。而用别名的方法会更简洁,用到哪个类就给哪个类做别名声明就可以了。注意:并不是说两个名字重复,给其中一个用了别名,另外一个就不需要用别名了,如果两个都要使用,则两个都需要用using来定义别名的。

using System;
using aClass = NameSpace1.MyClass;
using bClass = NameSpace2.MyClass;

namespace NameSpace1
{
    public class MyClass
    {
        public override string ToString()
        {
            return "You are in NameSpace1.MyClass";
        }
    }
}

namespace NameSpace2
{
    class MyClass
    {
        public override string ToString()
        {
            return "You are in NameSpace2.MyClass";
        }
    }
}

namespace testUsing
{
    using NameSpace1;
    using NameSpace2;
    /// <summary>
    /// Class1 的摘要说明。
    /// </summary>
    class Class1
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            //
            // TODO: 在此处添加代码以启动应用程序
            //

            aClass my1 = new aClass();
            Console.WriteLine(my1);
            bClass my2 = new bClass();
            Console.WriteLine(my2);
            Console.WriteLine("Press any key");
            Console.Read();
        }
    }
}

using定义一个范围

普通的try-catch-finally:

SqlConnection myConnection = null;  

// Example Using clause:
using ( myConnection = new SqlConnection( connString ))
{
  myConnection.Open();
}  

// example Try / Catch block:
try {
  myConnection = new SqlConnection( connString );
  myConnection.Open();
}
finally {
  myConnection.Dispose( );
}

using实现:

public void ExecuteCommand( string connString,  string commandString )
{
  using ( SqlConnection myConnection = new   SqlConnection( connString ))
  {
    using ( SqlCommand mySqlCommand = new  SqlCommand( commandString, myConnection ))
    {
      myConnection.Open();
      mySqlCommand.ExecuteNonQuery();
    }
  }
}

总结

有时候使用try/finally块的时候会发现如果发生错误,程序不会报错。本人感觉还是使用using语句比较好。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-03 23:02:38

using的一点点认识的相关文章

程序员,你要每天进步一点点-转载

第1个一点点:专注眼下 见过太多心猿意马的程序员,我不得不把「专注眼下」作为天字第一条.他们往往有各式各样的小梦想,比如做个小茶农.做个小鹅贩.做产品.做销售.做投资,却被程序员的高薪或是没有转行的魄力「耽误」了, 而因为不专注,他们不在意做好自己的本分,不在意锤炼自己的技能,不在意学习新兴的技术. 不可否认,这世界上存在着伟大的产品(像乔老爷).伟大的销售(像埃里森).伟大的投资客(像彼得菲),而他们毫无例外都是程序员出身.可你听说过巴菲特评价盖茨的话么,比尔盖茨如果转行去卖狗,那他一定是全世

励志小故事:再努力一点点

美国寻金热的时代,吸引了成千上万做黄金梦的人.有些人不惜变卖自己的全部家财,离乡背井,跑到美国去淘金. 有一个异乡人,也把自己在英国家乡的田地卖掉了,只身跑到美国最热门淘金的地方,希望能找到金矿后衣锦还乡. 他首先在当地买了一间屋作栖身之所,安顿之后,便开始他的寻金旅程,每天早出晚归,非常辛苦地到处找寻金矿.开始的时候,他还是满怀希望,相信很快便能找到金矿.可是,日复一日,年复一年,他从一个壮健的中年人,渐渐变成一个老年人,他找寻金矿的事业还是毫无进展. 最后,到他临死的时候,他的寻金梦终于成为

【C++基础】指针好难啊,一点点啃——基本概念

指针保存的是另一个对象的地址(概念真的很重要!!) int a=1; int *ptr = &a;//*定义一个指向int类型的指针ptr, &a取变量a的地址 一.指针的初始化 几个概念,迷途指针==野指针==悬浮(dangling)指针==失控指针 当对一个指针delete后,会释放原来的内存,但指针变量名依然存在,值却没有设置为NULL或0,这就相当于声明一个指针时没有初始化, 当再次使用该指针时,则会出现严重错误(崩溃是肯定的,本人还没体会到多严重),以上是我的理解 原则:不能使用

每天进步一点点——Linux中的线程局部存储(一)

转载请说明出处:http://blog.csdn.net/cywosp/article/details/26469435 在Linux系统中使用C/C++进行多线程编程时,我们遇到最多的就是对同一变量的多线程读写问题,大多情况下遇到这类问题都是通过锁机制来处理,但这对程序的性能带来了很大的影响,当然对于那些系统原生支持原子操作的数据类型来说,我们可以使用原子操作来处理,这能对程序的性能会得到一定的提高.那么对于那些系统不支持原子操作的自定义数据类型,在不使用锁的情况下如何做到线程安全呢?本文将从

技术带来的进步与退步---一点点反思

今天要处理一些数据, 把表格中两列内容并为一列. 我头脑中第一个想法就是,读出这两列数据,用split()函数,按行分开,再输出..... 当时我还洋洋得意,辛亏学了一点编程,要不这些数据不得处理死我..... 呵呵... 脚本写了一半,想到用notepad,把"\t"替换成空格即可. 只想表示我的一个毛病--把所有问题都转化成自己已经解决过的问题来处理, 没有一点创新的意识,再这样下去就成了麻木的 troublekiller了... 技术带来的进步与退步---一点点反思,码迷,mam

每天进步一点点!

我是个菜鸟级的女程序员,在这个领域工作刚三个月,亚历山大. 以前总感觉自己挺聪明的,可是,当面临程序BUG和优化时,总是绞尽脑汁. 我很想看电视剧,散步,逛街,聊天,打游戏...... 可是,那么多东西不会,我只能学习,"每天进步一点点",这句话给了我很大的动力,要学习的东西实在太多了,有时候想想真是后怕,怕自己哪天坚持不住了. 项目组也给了我很大的动力,刚进来就有写程序的任务,并且有漂亮姐姐的指导,想想自己也挺辛运的. 加油,每天进步一点点!

关于获取各种浏览器可见窗口大小的一点点研究

关于获取各种浏览器可见窗口大小的一点点研究<script>function getInfo(){var s = "";s = " 网页可见区域宽:" document.body.clientWidth;s = " 网页可见区域高:" document.body.clientHeight;s = " 网页可见区域宽:" document.body.offsetWidth " (包括边线和滚动条的宽)&quo

Spring MVC 遇到的一点点问题(转)

今天下午下班之前看了看凯歌给的Spring Training的教程的lab篇,我之前有跟着做没有遇到什么问题,但是到了跟Spring MVC integrating的时候,遇到一点点有趣的事情. 这个例子很简单,我照着网上的demo做,然后遇到了点问题,请看下面:项目层次 很简单     然后是web.xml的配置 Java代码   <servlet> <servlet-name>SpringMvcDemo</servlet-name> <servlet-clas

每天进步一点点001

进步一点点之:2017-09-20 翻译:很难确切的说现代计算机是在什么时候发明的.从20世纪30年代到20世纪40年代,许多类似计算机的机器被发明出来.但是这些机器并不具备当代计算机的所有特性.这些特性是机器是电子的,具有存储程序,并且是通用的.

中海达RTK使用说明之一个点点校验

中海达RTK点校验,中海达RTK点平移,中海达RTK单点校正步骤,怎么用中海达RTK进行点校准, 手薄型号:Ihand20 安卓系统手薄 软件:hi-survey road\elec 仪器:中海达公司任意RTK产品 使用两个点求转换参数流程: 第一步:点校验 第二步:检核参数精度,测控制点作对比,或点放样控制点 一个做点校验如何校验? 求了转换参数后,基站搬动后选择测区任意控制点(GPS03)一个点做点校验就可以! 1.点校验 进项目设置 系统界面,进点校验信息 选择测区任意控制点(GPS03)