zoukankan      html  css  js  c++  java
  • 转贴:.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条。

  • 相关阅读:
    跨站的艺术-XSS Fuzzing 的技巧
    腾讯云数据库团队:PostgreSQL TOAST技术理解
    Git commit message和工作流规范
    前端识别验证码思路分析
    Akamai在内容分发网络中的算法研究(翻译总结)
    Nginx网站使用CDN之后禁止用户真实IP访问的方法
    常用机器性能评估工具
    解决关于ArcGIS10.2服务手动启动的问题
    林业通用平台上线
    土地承包经营权地块示意图打印
  • 原文地址:https://www.cnblogs.com/s1ihome/p/518153.html
Copyright © 2011-2022 走看看