• C# using的三种用法


    一、using指令

      在文件顶部引用命名空间,如:using System;

    二、using别名

      为命名空间或类型定义别名,这种做法有个好处就是当同一个cs文件引用了两个不同的命名空间,但是两个命名空间都包括了一个相同名字的类型的时候,就会为此类型命名空间创建别名。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    //为命名空间定义别名 "ElseName"
    using ElseName = This.Is.Very.Very.Long.NamespaceName;
    //为类定义定义别名
    using ElseCName = This.Is.Very.Very.Long.NamespaceName.ThisIsVeryVeryLongClassName;
    
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //通过别名实例化对象   ::是命名空间别名的修饰符
            ElseName::NamespaceExample NSEx = new ElseName::NamespaceExample();
            //通过别名实例化对象
            ElseCName CN = new ElseCName();
            Response.Write("命名空间:" + NSEx.GetNamespace() + ";类名:" + CN.GetClassName());
        }
    }
    
    namespace This.Is.Very.Very.Long.NamespaceName
    {
        class NamespaceExample
        {
            public string GetNamespace()
            {
                return this.GetType().Namespace;
            }
        }
    
        class ThisIsVeryVeryLongClassName
        {
            public string GetClassName()
            {
                return System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName;
            }
        }
    }

    三.using语句

    定义一个范围,在范围结束时处理对象。using语句提供了一个脉络清晰的机制来控制资源的生存期,创建的对象会在using语句结束时被摧毁,使用前提该对象必须继承了IDisposable接口。某些类型的非托管对象有数量限制或很耗费系统资源,在代码使用完它们后,尽可能快的释放它们时非常重要的。using语句有助于简化该过程并确保这些资源被适当的处置(dispose)。

    它有两种使用形式。

    1.using (ResourceType Identifier = Expression ) Statement

     圆括号中的代码分配资源,Statement是使用资源的代码

     using语句会隐式产生处置该资源的代码,其步骤为:

     a:分配资源

     b:把Statement放进tyr块

     c:创建资源的Dispose方法的调用,并把它放进finally块,例如:

    using System;
    using System.IO;
    
    namespace @using
    {
        class Program
        {
            static void Main(string[] args)
            {
                using (TextWriter tw = File.CreateText("test.txt"))
                {
                    tw.Write("this is a test");
                }
               
                using (TextReader tr = File.OpenText("test.txt"))
                {
                    string input;
                    while ((input = tr.ReadLine()) != null)
                    {
                        Console.WriteLine(input);
                    }
                }
                Console.ReadKey();
            }
        }
    }

    输出:this is a test

    2.using (Expression)  Statement

    Expression 表示资源,Statement是使用资源,资源需要在using之前声明

    TextWriter tw = File.CreateText("test.txt");
    using(tw){......}

    这种方式虽然可以确保对资源使用结束后调用Dispose方法,但不能防止在using语句已经释放了他的非托管资源之后使用该资源,可能导致不一致的状态,不推荐使用。

  • 相关阅读:
    类变量、绑定方法、静态方法和类方法
    面向对象练习及补充
    2、error:file /usr/bin/ ** mysql-client-5.6.39-1.el7.x86_64
    15、Linux 磁盘映射DM
    14、echo “$JAVA_HOME/bin” >>/etc/profile 转义
    typora文件导出word
    1、Rocketmq centos7下安装及使用
    13、hostname及hostnamectl区别
    1、MySql集群
    Hadoop安装
  • 原文地址:https://www.cnblogs.com/linybo/p/13339707.html
Copyright © 2020-2023  润新知