• 转贴:.net中using的几种用途


    original url:  http://www.cnblogs.com/zhangjidong/archive/2006/03/22/355854.html

    今天一个朋友问我using有几种用途,我的第一反应就是茴香豆的4种写法,第2反应是肯定又是个面试题。
    先前就是到using可以这样用:
    1.引用命名空间,减少冗余代码。
    Using System.Web.UI.WebControls;
    2.即时释放资源。
    Using (TestObject a = new TestObject())  {

    // 使用对象

    }

    //对象资源被释放

    不时说有3条吗?立马查了一下sdk
    sdk里是这么说的:
    =========================================================================================

    using 指令有两个用途:
    创建命名空间的别名(using 别名)。
    允许在命名空间中使用类型,例如,不必限定该命名空间中的类型使用(using 指令)。
    using [alias = ]class_or_namespace;
    其中:
    alias(可选)
    希望表示命名空间的用户定义符号。之后,您就可以使用 alias 表示命名空间名。
    class_or_namespace
    希望使用或为其提供别名的命名空间名,或希望为其提供别名的类名。
    备注
    创建 using 别名以便更易于将标识符限定到命名空间或类。
    创建 using 指令,以便在命名空间中使用类型而不必指定命名空间。using 指令不为您提供对可能嵌套在指定命名空间中的任何命名空间的访问。
    命名空间分为两类:用户定义的命名空间和系统定义的命名空间。用户定义的命名空间是在代码中定义的命名空间。有关系统定义的命名空间的列表,请参见 .NET Framework 文档。
    有关其他程序集中的引用方法的示例,请参见创建和使用 C# DLL。
    示例
    下面的示例显示了如何为命名空间定义和使用 using 别名:
    // cs_using_directive.cs
    using MyAlias = MyCompany.Proj.Nested;  // define an alias to represent a namespace

    namespace MyCompany.Proj
    {
       public class MyClass
       {
          public static void DoNothing()
          {
          }
       }

       namespace Nested   // a nested namespace
       {
          public class ClassInNestedNameSpace
          {
             public static void SayHello()
             {
                System.Console.WriteLine("Hello");
             }
          }
       }

    }

    public class UnNestedClass
    {
       public static void Main()
       {
          MyAlias.ClassInNestedNameSpace.SayHello();   // using alias
       }
    }
    输出
    Hello
    示例
    下面的示例显示了如何为类定义 using 指令和 using 别名:
    // cs_using_directive2.cs
    using System;   // using directive
    using AliasToMyClass = NameSpace1.MyClass;   // using alias for a class

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

    namespace NameSpace2
    {
       class MyClass
       {
       }
    }

    namespace NameSpace3
    {
       using NameSpace1;   // using directive
       using NameSpace2;   // using directive

       class Test
       {
          public static void Main()
          {
             AliasToMyClass somevar = new AliasToMyClass();
             Console.WriteLine(somevar);
          }
       }
    }
    输出
    You are in NameSpace1.MyClass
    =========================================================================================
    所以再加上一条:
    3.创建命名空间的别名(using 别名)。
    using MyAlias = MyCompany.Proj.Nested;
    “凑”了3条。

  • 相关阅读:
    Java内存分配及垃圾回收机制
    《当你的才华还撑不起你的梦想时》读后感
    Java线程池入门必备
    单例模式的那些事
    idea超炫的自定义模板
    布隆过滤器概念和原理
    MessageDigest
    java zip 压缩与解压
    WebStorm 注册码
    taobao-pamirs-proxycache开源缓存代理框架实现原理剖析
  • 原文地址:https://www.cnblogs.com/s1ihome/p/518153.html
Copyright © 2020-2023  润新知