将一个对象分配给同一类的另一个对象

杰西克·沃西克(Jacek Wojcik)

请看下面的代码:

class Parent{}

class Child : Parent
{
    public int field 
    {
        get; 
        set;
    }
}

class Program
{
    static void Main(string[] args)
    {
        Child child1 = new Child();
        Child child2 = child1;              //same memory address?

        child1.field = 12;
        child2.field = 14;

        Console.WriteLine(child1.field);    //14, as expected

        child1 = null;
        Console.WriteLine(child2.field);    //expected to crush: 'child1' is null so expected 'child2' to also be null

        Console.ReadLine();
    }
}

我希望此代码崩溃,但事实并非如此。

为什么?

斯坦利

那不是引用的工作方式。

Child child1 = new Child();

创建对新对象引用Child

Child child2 = child1;  

创建另一个引用,指向同一个对象child1

child1 = null;

child1 引用设置null(不再指向任何内容)。它不会更改它指向的对象并且不会影响child2child2仍然指向它之前所做的同一对象。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将一个对象分配给另一个对象Javascript

在C ++中将一个类对象分配给另一个类对象

随机类-将对象分配给另一个对象

在Java中将一个对象分配给另一个对象

我可以重载 operator= 以将一个类的对象分配给另一个类的变量,但两个类都来自同一个类模板

当使用=将一个对象分配给另一个对象时,将进行复制类型

将NSData对象分配给另一个NSData对象的逻辑

可以将一个对象分配给另一个具有不同类型的对象

将一个对象的值分配给另一个对象时的奇怪行为

如何使用 Scanner 将一个对象分配给另一个对象

将(OOP)对象分配给另一个

将函数的返回IEnumerable <MovingAverage>值分配给另一个对象

将另一个子类的对象分配给指向的地址[C ++]

如何将一个可观察的KnockoutJs分配给另一个可观察的对象?

如何将一个lambda表达式对象分配给另一个?

如何将值从一个对象分配给另一个

如何将特定属性从一个对象分配给另一个

解构对象并分配给一行中的另一个对象

在将对象分配给另一个对象时查询对象的地址

一个对象如何影响同一类中的另一个对象?

更改一个对象中的变量是更新同一类的另一个对象的相同变量

访问同一类中另一个对象的私有字段

在声明对象时将对象属性值分配给另一个属性

过滤数组中的对象并将其分配给另一个对象

在将对象分配给另一个对象之前检查是否相等

对象的好处分配给Java中的另一个对象

如何访问分配给另一个对象的属性的数组内的对象的属性?

将分配对象常量的对象同时分配给新数组,并同时将forEach分配给另一个数组

将一个分配的指针分配给另一个分配的指针