在C#中通过引用或不引用传递对象

Pik*_*iku 4 c# parameter-passing pass-by-reference

假设我有一个这样的类:

public class ThingManager {
    List<SomeClass> ItemList;

    public void AddToList (SomeClass Item)
    {
        ItemList.Add(Item);
    }

    public void ProcessListItems()
    {
        // go through list one item at a time, get item from list,
        // modify item according to class' purpose
    }
}
Run Code Online (Sandbox Code Playgroud)

假设"SomeClass"是一个相当大的类,包含非常复杂的方法和成员(例如,List <> s和数组),并且可能存在大量的类,因此不会在程序周围复制大量数据重要.

"AddToList"方法中是否应该包含"ref"?为什么?

这就像试图重新学习C中的指针一样;-)(这可能就是为什么我感到困惑,我试图将它们与指针联系起来.在C中它是"SomeClass*Item"和一个列表" SomeClass*"变量"

Lee*_*Lee 17

由于SomeClass是一个类,因此它会通过引用自动传递给AddToList方法(或者更准确地说,它的引用按值传递),因此不会复制该对象.如果要在AddToList方法中重新分配引用所指向的对象,则只需使用ref关键字,例如Item = new SomeClass();.