c#MVC using的用法

今天研究公司的mvc项目的时候,才发现using(){},一开始不知道干嘛的,搜索也搜不到相关资料,就找了好多的关键字搜索了一下,终于在一篇博客上找到了这个用法,给大家跟我一样接触编程不久的新手学习一下。

using这个关键字在C#中共用三个用法:  (最重要的是第三种方法,我先放一个我看到的实例)

例子:之前在webform中用到的连接字符串,每次调用ado的时候需要conn.open();用完之后一定要关闭,conn.close();这是我在最近项目中看到的类似于sqlhelper的东西:

public class DBContext : IDisposable
    {
        private static string connectionString;
        private static DbProviderFactory dbfactory;
        private DbConnection conn;

        static DBContext()
        {
            if (ConfigurationManager.ConnectionStrings.Count < 0)
                throw new ConnectionStringException();
            ConnectionStringSettings css = ConfigurationManager.ConnectionStrings["strCon"];
            dbfactory = DbProviderFactories.GetFactory(css.ProviderName);
            connectionString = css.ConnectionString;
        }

        public DBContext()
        {
            this.conn = dbfactory.CreateConnection();
            this.conn.ConnectionString = connectionString;
            this.conn.Open();
        }

        ~DBContext()
        {
            Dispose(false);
        }

        public DataTable OpenQuery(string sql, params object[] args)
        {
            DataTable dt = new DataTable();
            using (DbDataAdapter adapter = dbfactory.CreateDataAdapter())
            {
                using (DbCommand cmd = PrepareCommand(sql, args))
                {
                    adapter.SelectCommand = cmd;
                    adapter.Fill(dt);
                }
            }
            return dt;
        }

上面这些东西就是一部分我现在看到的DBcontext了,不是很明白dbfactory的出现,不是每次new一下是实例化么,在我的印象里实例化就是new,有点小尴尬。。

接下来是项目中控制器中的一段代码:sql_supply与,sql_demmand,是两个执行查询的SQL语句

 using (DBContext context = new DBContext())
            {
                ViewData["dt_supply"] = context.OpenQuery(sql_supply);
                ViewData["dt_demmand"] = context.OpenQuery(sql_demmand);

                 return View();
        }

好了,这么简单的调用方法就把一个表的数据传递到了view了,在view上@viewdata["dt_supply"],行列,就可以取到值了

看到这里,一直纳闷在using ()里实例化了DBContext context = new DBContext(),因为构造函数里直接写了open,所以现在与数据库之间的联系是打开的,{}里就简单了,用了dbcontext的方法来返回一个dt,把dt赋值到viewdata里,return view();在另一个}后面相对于就把这个context给释放了,关掉了与数据库的连接,我是这样理解的,下面的游客大神么给点批评哦。接下来看using的使用。

1、用在命名空间里
   如:using System;  这个谁都知道,为了不用写类的全名(可以把System.Console  写成  Console)  
2、可以用来对一个类进行重命名,也是为了使用方便,如:  
    using System;  
    using hahaha     =     System.Console;   
    namespace  Console001  
    {  
    public class Class1  
    {  
    public static void Main()  
    {  
    hahaha.WriteLine("using 的第二种用法!");  
    }  
    }  
    }  
3,C#中的using除了作为命名空间指示符(using System),类型的别名指示符(using Dos=System.Console),还有资源管理的语句功能:
using (R r1 = new R ()) {
   r1.F();
}
在C#中被翻译为:
R r1 = new R();
try {
   r1.F();
}
finally {
   if (r1 != null) ((IDisposable)r1).Dispose();
}



猜你喜欢

转载自blog.csdn.net/qq_14840819/article/details/46804257