相关疑难解决方法(0)

克隆列表<T>

我想要克隆一个List你只需要调用:

List<int> cloneList = new List<int>(originalList);
Run Code Online (Sandbox Code Playgroud)

但是我在我的代码中尝试了这一点,我似乎得到的效果暗示上面只是在做:

cloneList = originalList ...因为对cloneList的更改似乎正在影响originalList.

那么克隆List的方法是什么?

编辑:

我在考虑做这样的事情:

public static List<T> Clone<T>(this List<T> originalList) where T : ICloneable
{
    return originalList.ConvertAll(x => (T) x.Clone());
}
Run Code Online (Sandbox Code Playgroud)

EDIT2:

我拿了Binoj Antony建议的深拷贝代码并创建了这个扩展方法:

public static T DeepCopy<T>(this T original) where T : class
{
    using (MemoryStream memoryStream = new MemoryStream())
    {
        BinaryFormatter binaryFormatter = new BinaryFormatter();
        binaryFormatter.Serialize(memoryStream, original);
        memoryStream.Seek(0, SeekOrigin.Begin);
        return (T)binaryFormatter.Deserialize(memoryStream);
    }
}
Run Code Online (Sandbox Code Playgroud)

EDIT3:

现在,假设列表中的项目是结构.如果我打电话会怎么样?:

List<StructType> cloneList = new List<StructType>(originalList);
Run Code Online (Sandbox Code Playgroud)

我非常肯定,我会得到一个填充了新的独特项目的列表,对吗?

.net c#

23
推荐指数
3
解决办法
3万
查看次数

标签 统计

.net ×1

c# ×1