C#中的using关键字是什么?什么地方使用using?

C#开发 2015-09-07 2715浏览 收藏本文

C#中的using关键字是什么?

我们需要明确:using是C#语言中的一个关键字。
所以在C#的编码过程中我们是不能直接使用using这个字符串来声明变量名的。

什么地方使用using?

在C#的编码中using大致有两种使用场景:
1.可以使用using关键字来引入命名空间
首先在Visual Studio中创建一个名为UsingDemo的类库项目,IDE会自动为我们创建一个同名(UsingDemo)的解决方案,再在项目中新建一个类,取名Blog.cs,示例代码片段:
/*此处使用了using 关键字来引入System命名空间
 *注意:System命名空间的.NET Framework库自带的命名空间
 *     所以,只在项目中引用了System这个类库,就可以在这里直接使用using来引入
 *     在新建C#项目类库项目时,IDE默认是引入了System类库的
 */
using System;

/*此处的UsingDemo就是自定义的命名空间
 *我们可以在其他引用了UsingDemo这个项目的文件中使用using来引入UsingDemo这个命名空间
 */
namespace UsingDemo
{
  /// <summary>
  /// 声明一个名为Blog的类
  /// </summary>
  public class Blog
  {
    public int Id { get; set; }
    public string Title { get; set; }
    public string Post { get; set; }
    public DateTime CreatedOn { get; set; }
  }
}
在代码片段中,我们首先使用using关键字来引入System这个命名空间,在这里using就是起到引入指定命名空间的作用。
说明:示例中的namespace即声明了一个命名空间,上面的示例即声明了一个名为"UsingDemo"的命名空间,我们可以在其他引用了UsingDemo这个项目的文件中使用using来引入UsingDemo这个命名空间。
再在UsingDemo解决方案中新建一个名为:UsingDemo.Client的控制台应用程序项目。在UsingDemo.Client的项目的"引用"中右键单击"添加引用",在弹出的"引用管理器"中点击"解决方案"选项卡,勾选我们上面创建的"UsingDemo"项目。这样,我们就在UsingDemo.Client控制台应用程序项目中成功引用了"UsingDemo"这个项目。那么,我们就可以在UsingDemo.Client项目的cs文件中使用using关键字来引入"UsingDemo"这个命名空间,如下代码示例片段:
using System;
//使用using关键字来引入我们自定义的命名空间--UsingDemo
using UsingDemo;

namespace UsingDemo.Client
{
  class Program
  {
    static void Main(string[] args)
    {
      //实例化一个Blog类
      var blog = new Blog
      {
        Id = 1,
        Title = "博客标题",
        Post = "博客内容",
        CreatedOn = DateTime.Now
      };
      Console.WriteLine("Title:{0}", blog.Title);
      Console.WriteLine("-----------------------------------------");
      Console.WriteLine("Post:{0}", blog.Post);
      Console.WriteLine("-----------------------------------------");
      Console.WriteLine("CreatedOn:{0}", blog.CreatedOn);
      Console.WriteLine("-----------------------------------------");
      Console.ReadKey();
    }
  }
}
运行结果如图: using-demo-1 好了,以上就是对using关键字引入命名空间的使用的示例说明。 2.using语句块
using语句块可以很好地为我们管理资源。在C#和其他托管语言中,没有自动、决定性的析构方式,而是有一个垃圾收集器,它会在未来的某个时刻释放资源。它是非决定性的,因为我们不能确定这个过程在什么时候发生。
下面以连接数据库为例来说明使用using语句块的好处。
在数据库的操作上,我们需要先定义数据库的连接字符串,再打开连接进行相应的数据操作,使用完数据库连接后,我们还得把这个连接关闭掉。看一下不用using语句块的场景:
try
      {
        //定义数据库连接字符串
        var strConn = "数据库连接字符串";
        //定义并实例化一个连接类
        var conn = new SqlConnection(strConn);

        //打开数据库连接
        conn.Open();

        //相应的数据库操作和业务逻辑处理

        //手动关闭数据库连接(注意:数据库连接使用之后一定记得关闭)
        conn.Close();
      }
      catch (Exception e)
      {
        //处理异常
      }
在以上代码片段中,我们必须手动去关闭数据库的连接以及手动使用try...catch语句块来处理异常。那么如果使用using语句块会如何呢?也是一样,看示例代码片段:
//定义数据库连接字符串
      var strConn = "数据库连接字符串";
      using (var conn = new SqlConnection(strConn))
      {
        //打开数据库连接
        conn.Open();

        //相应的数据库操作和业务逻辑处理

}
在这个示例中,无论块是如何退出的,using子句都会确保关闭数据库连接。 查看一下连接类的Dispose()方法的IL代码,它们都检查连接对象的当前状态,如果其状态为打开,就调用Close()方法。浏览.NET程序 集的一个强大工具是Reflector(可以从/www.aisto.com/roeder/dotnet/上获得)。这个工具允许查看任何.NET方法 的IL代码,还可以把IL代码反编译为源代码,让我们轻松地确定给定的方法的作用。 另外,如果在using块中出现了异常,using子句就会确保在资源上调用IDisposable.Dispose方法,在本例中将确保总是关闭数据库连接。这样,与必须确保在异常子句中关闭连接相比,代码的可读性更高。 最后,如果编写一个封装资源的类,无论该资源是什么,都应实现IDisposable接口,关闭资源。这样,任何使用该类的代码都可以利用using()语句,以确保资源被释放。

转载请注明:图享网 » C#中的using关键字是什么?什么地方使用using?

验证码