日期:2014-05-19  浏览次数:20893 次

一个类的构造函数设计
public   Dict(string   En)
                {
                        string   SelectCMD   =   "SELECT   *   FROM   [dicts]   WHERE([English]= ' "+En+ " ') ";
                        Conn   cnn   =   new   Conn();
                        OleDbCommand   oCommand   =   new   OleDbCommand(SelectCMD,   cnn.oConn);
                        OleDbDataReader   oReader;
                        try
                        {
                                oCommand.Connection.Open();
                                oReader   =   oCommand.ExecuteReader();
                                while   (oReader.Read())
                                {
                                        this._Cn   =   oReader[ "Chinese "].ToString();
                                        this._En   =   oReader[ "English "].ToString();
                                        this._Id   =   Convert.ToInt32(oReader[ "id "].ToString());
                                }
                                return;

                        }
                        catch   (Exception   exception)
                        {
                               
                                throw   exception;
                        }
                }

我的本意是重载构造函数,使得可以自动返回类实例,
但是刚刚想到这样做有个小问题,即:如果查询为空时怎么办?
当然可以再设计一个有返回值的函数,
或者再设计一个检测是否有数据的函数,
如果有则执行带参构造函数,如果没有数据则执行默认的构造的函数,

我贴出来是想问问,在需要获取数据并实例化时,通常怎么操作?

------解决方案--------------------
我个人更喜欢这个些
public class Dict{
public static Dict Undefine;
public Dict GetByEn(string En){
if(oReader.Read()){
return newInstance;
}
else{
return Undefine;