日期:2014-05-16  浏览次数:20548 次

关于强制类型转换的效率问题
我有一个基类,然后继承类都会使用到数据库连接
如果我在基类中声明IDbConnection,那么在继承类中使用时,每次都要强制转换,不知道对效率会有多大影响,这样的好处是代码复用率高
如果我在基类中不声明IDbConnection,那么我在继承类中将单独的声明各自的connection,这样效率虽高,但代码复用率不高

代码举例如下,请教各位,如果采用IDbConnection的方式,对效率会有多大影响,比之于下面的例子


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//
using System.Data;
using System.Data.SqlClient;

namespace DBManger
{
    public class DBManagerBase
    {
        //在基类中声明一个接口对象
        protected IDbConnection conn; 
    }

    public class DBManagerSqlServer : DBManagerBase
    {
        public DBManagerSqlServer(string _connStr)
        {
            conn = new SqlConnection(_connStr);
        }

        public void insert(string sqlStr)
        {
            //每次使用时转换一次,优点代码少,但是不知道转换的代价是多少
            SqlCommand cmd = new SqlCommand(sqlStr, (SqlConnection)conn);
        }
    }
}


namespace DBManger
{
    public class DBManagerBase
    {
    }

    public class DBManagerSqlServer : DBManagerBase
    {
        //在继承类中声明对象
        protected SqlConnection conn;

        public DBManagerSqlServer(string _connStr)
        {
            conn = new SqlConnection(_connStr);
        }

        public void insert(string sqlStr)
        {
            //不需要转换,效率最高
            SqlCommand cmd = new SqlCommand(sqlStr, conn);
        }
    }
}

------解决方案--------------------


..即然都明确了是哪一种数据库了 为何不用SqlConnection 还非得用  IDbConnection 基类只声明这个没啥做用。。
------解决方案--------------------
引用:


..即然都明确了是哪一种数据库了 为何不用SqlConnection 还非得用  IDbConnection 基类只声明这个没啥做用。。
这可能是楼主举的一个例子,他的重点是在于斟酌‘类型转换效率’和‘代码重复率’哪个代价更大,使用什么方式做到更好的代码优化