更改变量也会更改另一个变量.防止变量具有相同的引用

Ton*_*Nam 1 c# pass-by-reference pass-by-value

我有一个类,构造函数需要一个类和其他东西,如:

public class SomeClass<T>
{
    //global private variables for class
    List<T> originalList = new List<T>;
    List<T> tempList = new List<T>;

    public SomClass(List<T> listParam, string name, ..etc)
    {
        originalList = listParam;
        tempList = listParam;

        originalList.removeAt(0);  // this also removes an item from tempList.


    }
}
Run Code Online (Sandbox Code Playgroud)

我知道这是因为originalList和tempList具有相同的引用.我怎么能让他们有不同的参考.我使用tempList来过滤结果,每当我想刷新时我都使用originalList

dle*_*lev 5

你可以复制一份listParam,而不只是分配它的参考:

tempList = listParam.ToList();
Run Code Online (Sandbox Code Playgroud)

请注意,这并没有在列表中创建的每个对象的副本,而只是一个引用这些对象的副本.