C#里不提倡直接操作内存。
我理解你的意思应该是:你要对一个对象赋值,但又想保留原来的值。那你只能克隆一个一模一样的对象,改变新克隆出来的对象,原有的那个不要动。例如:
class MyClass
{
public string Name { get; set; }
public List<int> List { get; set; }
}
class Program
{
static void Main(string[] args)
{
MyClass origin = new MyClass();
origin.Name = "A";
origin.List = new List<int>() { 1, 2, 3 };
MyClass copy = new MyClass();
copy.Name = origin.Name;
// copy.List = origin.List; 这样相当于引用了origin的成员
copy.List = new List<int>();
foreach (int item in origin.List)
{
copy.List.Add(item);
}
// 现在可以放心使用copy的值了,origin的不会改变了
}
}
如果不明白,请先好好理解一下C#里的引用类型和值类型。