更改变量的副本是否会更改原始变量?

时间:2012-06-27 15:43:09

标签: c# oop entity-framework-4.1

我在

代码中有访问修改后的闭包错误
foreach (var user in Entities.User)
            {
                bool any = Entities.Person.Any(
                    p => p.Name == user.Name);
            }

所以我把它改成了

foreach (var user in Entities.User)
            {
User theUser = user;
                bool any = Entities.Person.Any(
                    p => p.Name == theUser.Name);
            }

现在,问题是我希望能够修改用户对象的属性。如果我执行以下任一操作是否重要。当我在DbContext上调用SaveChanges时,它们都会保存到数据库吗?

user.Property = 1;

theUser.Property = 1;

3 个答案:

答案 0 :(得分:3)

是。在这种情况下,User很可能是referencec类型,因此该类型的变量只是指向实例的引用。赋值只是将另一个变量更改为指向同一个实例。

答案 1 :(得分:2)

这些是参考类型。所以这两个变量都指向同一个对象。在这两种情况下都会更改Property

答案 2 :(得分:2)

用户是一个类,所以你实际上并没有复制用户,你只是将一个引用(或一个指针,有时也称为它)复制给该用户。这两个引用的副本都将“看到”对底层对象的任何更改。