using三种用法

  转(http://blog.sina.com.cn/s/blog_586b6c0501000ax3.html)

1. using指令。using + 命名空间名字,这样可以在程序中直接用命令空间中的类型,而不必指定类型的详细命名空间,类似于Java的import,这个功能也是最常用的,几乎每个cs的程序都会用到。

例如:using System; 一般都会出现在*.cs中。

2.using别名。using + 别名 = 包括详细命名空间信息的具体的类型。  

  这种做法有个好处就是当同一个cs引用了两个不同的命名空间,但两个命名空间都包括了一个相同名字的类型的时候。当需要用到这个类型的时候,就每个地方都要用详细命名空间的办法来区分这些相同名字的类型。而用别名的方法会更简洁,用到哪个类就给哪个类做别名声明就可以了。注意:并不是说两个名字重复,给其中一个用了别名,另外一个就不需要用别名了,如果两个都要使用,则两个都需要用using来定义别名的。

例如:

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

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


using myclass1=Test.namespace1;
using myclass2=Test.namespace2;
namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            myclass1.MyClass m = new myclass1.MyClass();
            Console.WriteLine(m);
            myclass2.MyClass m2 = new myclass2.MyClass();
            Console.WriteLine(m2);
            Console.ReadLine();
        }
    }
}

  

3.using语句,定义一个范围,在范围结束时处理对象。

场景:

当在某个代码段中使用了类的实例,而希望无论因为什么原因,只要离开了这个代码段就自动调用这个类实例的Dispose。要达到这样的目的,用try...catch来捕捉异常也是可以的,但用using也很方便。

        /// <summary>
        /// sqlite数据库增删改操作
        /// </summary>
        /// <param name="sql">执行增删改的语句</param>
        /// <param name="parameters">执行增删改语句所需要的参数,参数必须以他们在sql语句中的顺序为准</param>
        public int executeNonQuery(String sql,SQLiteParameter[] parameters) {
            int affectedRows = 0;
            using(SQLiteConnection connection=new SQLiteConnection(connectionString)){
                connection.Open();
                using(DbTransaction transaction=connection.BeginTransaction()){
                    using(SQLiteCommand cmd=new SQLiteCommand(connection)){
                        cmd.CommandText = sql;
                        if(parameters!=null){
                            cmd.Parameters.AddRange(parameters);
                            
                        }
                        affectedRows = cmd.ExecuteNonQuery();
                    }
                    transaction.Commit();
                }
            }
            return affectedRows;
        }
原文地址:https://www.cnblogs.com/taray/p/5311475.html