我有一个包含对象的字典作为值Dictionary<String, Object>
。使用深层拷贝我正在创建字典的克隆。将克隆添加到变量中,对于我添加key + "String"
的每个键,将其作为数据表中的列包含与字典中的键相同的列数和值。将此更新的dictionary[key]
添加到列表并将列表添加到数据表中。
此过程运行正常,但有时会导致
索引超出了数组的范围。
和
目标数组不够长,无法复制集合中的所有项目。检查数组索引和长度。
任何人都可以帮助我,让我知道偶然发生此错误的原因。
Dictionary<String, Object> obj=
DeepCopyHelper.Clone(taskResult.TaskStatistics.TaskSpecificData.StatisticsData());
var taskSpecificRefData = new Dictionary<String, Object>(obj);
foreach (String key in taskSpecificRefData.Keys)
{
if (!dtReturn.Columns.Contains(key + "Ref"))
{
dtReturn.Columns.Add(key + "Ref");
dataRowObjects.Add(taskSpecificRefData[key]);
}
}
dtReturn.Rows.Add(dataRowObjects.ToArray());
public static T Clone<T>(T source)
{
if (!typeof(T).IsSerializable)
{
throw new ArgumentException("The type must be serializable.", "source");
}
if (Object.ReferenceEquals(source, null))
{
return default(T);
}
IFormatter formatter = new BinaryFormatter();
Stream stream = new MemoryStream();
using (stream)
{
formatter.Serialize(stream, source);
stream.Seek(0, SeekOrigin.Begin);
return (T)formatter.Deserialize(stream);
}
}