日期:2014-05-18  浏览次数:20951 次

高份求解简单问题 !进来有分
tatic Hashtable _hasResObject = new Hashtable();
static public CResObjectInfo GetResObjectInfo(int nResID, int nConfigID)
{
Hashtable resObj = _hasResObject[nResID] as Hashtable ;
if( resObj == null )
{
resObj = new Hashtable();
_hasResObject[nResID] = resObj;
}

CResObjectInfo resConfig = resObj[nConfigID] as CResObjectInfo ;
if( resConfig != null )
{
return resConfig ;
}

resConfig = new CResObjectInfo();
if ( !resConfig.LoadResBaseInfo(nResID, nConfigID))
{
return null;
}
resObj[nConfigID] = resConfig;
return resConfig;
}
大家帮我看看 这个程序是赶什么用的 我看不懂啊

------解决方案--------------------
C# code

static Hashtable _hasResObject = new Hashtable(); //静态Hash表,共享给该类所有实例
static public CResObjectInfo GetResObjectInfo(int nResID, int nConfigID)
{
Hashtable resObj = _hasResObject[nResID] as Hashtable ;  从共享Hash表的nResID键读取值并转换为Hash表
if( resObj == null )
{
resObj = new Hashtable();
_hasResObject[nResID] = resObj; 如果该位置不存在对象或者找到对象但转换成Hash表失败,则新建一个Hash表放到该位置(nResID位置)
}

CResObjectInfo resConfig = resObj[nConfigID] as CResObjectInfo ; 从共享Hash表的nConfigID键读取值并转换为CResObjectInfo
if( resConfig != null )
{
return resConfig ; 该位置存在对象并转换CResObjectInfo成功,则返回该对象,退出...
}

resConfig = new CResObjectInfo(); //否则新建CResObjectInfo对象
if ( !resConfig.LoadResBaseInfo(nResID, nConfigID))  //调用新建对象的LoadResBaseInfo方法(该方法内容未知,猜测可能是以同样的参数读取默认信息,并给新建的CResObjectInfo对象赋予内容)
{
return null; //读取失败则返回null
}
resObj[nConfigID] = resConfig; //读取成功则在共享Hash表的nConfigID键位置写入该含有信息的新CResObjectInfo对象
return resConfig; //返回该对象
}

------解决方案--------------------
这个应该是1.0的写法吧??

static Hashtable _hasResObject = new Hashtable();//声明一个Hashtable对象
static public CResObjectInfo GetResObjectInfo(int nResID, int nConfigID)
{
Hashtable resObj = _hasResObject[nResID] as Hashtable ;//从_hasResObject中根据Key获取对象(Key为nResID),很明显_hasResObject的Value类型为hashtable
if( resObj == null )//如果获取的对象为null,也就是说_hasResObject不存在Key为nResID的对象
{
//初始化对象,并且把对象保存进_hasResObject,Key为nResID,Value为空的Hashtable
resObj = new Hashtable();
_hasResObject[nResID] = resObj;
}

//如果存在数据,根据nConfigID从resObj中获取CResObjectInfo对象 
CResObjectInfo resConfig = resObj[nConfigID] as CResObjectInfo ;
if( resConfig != null )
{
//如果有就返回
return resConfig ;
}

//如果没有则初始化,并且保存
resConfig = new CResObjectInfo();
if ( !resConfig.LoadResBaseInfo(nResID, nConfigID))
{
return null;
}
resObj[nConfigID] = resConfig;
return resConfig;


很简单的一段代码
如果是2.0用泛型就会好很多~~~