我知道stackoverflow中存在这个问题。但我的似乎不同。我看不出有什么问题。但它有时会在运行时发生。
我得到的异常: “System.Collections.Generic.List`1[System.String] GetTemplateAndPicture(System.String):索引超出范围。必须为非负数且小于集合的大小。参数名称:索引"
这是我的代码:有人可以看看并告诉我会发生什么吗?
public static List<string> GetTemplateAndPicture(string sessionID)
{
List<string> data = new List<string>();
try
{
// get the session data from the list.
SessionData sData = null;
try
{
//sData = SessionDataList.Find(p => p.SessionID.Equals(sessionID));
foreach (SessionData sessiondata in SessionDataList.ToList<SessionData>())
{
if (sessiondata != null && !string.IsNullOrEmpty(sessiondata.SessionID))
{
if (sessiondata.SessionID.Equals(sessionID))
{
sData = sessiondata;
break;
}
}
}
}
catch (Exception ex)
{
RightPatientRemoteWebserviceLog.Debug(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType + "::" + System.Reflection.MethodBase.GetCurrentMethod().ToString() + ":" + ex.Message);
}
// get template data from session data
string templateData = (sData == null) ? string.Empty : sData.TemplateData;
// get picture data from session data
string pictureData = (sData == null) ? string.Empty : sData.PictureData;
string errorCode = (sData == null) ? string.Empty : sData.ErrorCode;
// remove the session data from the list. no more usage with this data.
if (sData != null && SessionDataList.Count>0)
SessionDataList.Remove(sData);
// create a list for sending.
data.Add(templateData);
data.Add(pictureData);
data.Add(errorCode);
return data;
}
catch (Exception ex)
{
RightPatientRemoteWebserviceLog.Debug(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType + "::" + System.Reflection.MethodBase.GetCurrentMethod().ToString() + ":" + ex.Message);
}
return data;
}