混乱しています
シナリオ:
別の DataSet に追加する DataTable のコピーを作成したいと考えています。それを行うには2つの方法があります(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
、または他のロジックを使用しますか?