我有一个困惑
设想:
我想创建要添加到另一个 DataSet 的 DataTable 的副本。有两种方法可以做到(AFAIK):
1. Make a Copy using DataTable.Copy()
2. Make a Deep Clone using
public static T DeepClone<T>(this T source)
{
if (!typeof(T).IsSerializable)
throw new ArgumentException("The type must be serializable.", "source");
// Don't serialize a null object, simply return the default for that object
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);
}
}
我的困惑:
- 还有其他方法吗?
- 哪个更好,为什么?
DataTable.Copy()
内部使用DeepClone
还是其他一些逻辑?