对对象的引用并不更新该对象

2024-04-18

您好,我正在使用看起来像这样的代码。

class A
{
    Custom objA;

    public A()
    {
        //Assign some value to objA;
        B obj = new B(objA);
    }
}

class B
{
    Custom objB;

    public B(Custom obj)
    {
        this.objB = obj;
    }

    public void Func()
    {
        this.objB = null;
    }
}

where Custom是自定义可为空类型。

现在,据我所知,objA每当我调用时,必须将值更新为 nullFunc() of class B。然而,事实并非如此。

我在这里做错了什么吗?


首先,在第 5 行,有一个语法错误。你可以做B obj = new B(objA)如果您尝试创建一个新实例B。但我只能猜测。

您似乎正在尝试做的是修改objA通过将其传递给类型的新对象B,将其存储在一个字段中,然后修改该字段。问题是您存储的是对的引用的副本objA。当你这样做时this.objB = null,您正在修改该字段objB有一个新的参考(null),但你还没有对该字段做任何事情objA它是类实例的成员A.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对对象的引用并不更新该对象 的相关文章

  • 如何在 C# 中导航任何 JSON 树?

    我需要像导航 XML 一样导航 Json 结构XmlDocument 结构未知 我需要迭代节点来解析一些数据 这可能吗 我知道我可以使用JavaScriptSerializer将其反序列化为已知类型 但事实并非如此 因为我可以接收任何有效的
  • 如何在类的 Dispose 方法中取消订阅匿名函数?

    我有一个 A 类 在它的构造函数中 我正在为 Object B 的 eventHandler 分配一个匿名函数 如何从 A 类的 Dispose 方法中删除 取消订阅 它 任何帮助 将不胜感激 谢谢 Public Class A publi
  • ld:文件是针对 Mac OS X 上不受支持的文件格式构建的

    我必须使用在其他 x64 86 计算机上编译的共享对象来构建一个项目 我有这个错误 cc std c11 Wall Werror Wextra pedantic I include src server c obj tftp o o bin
  • 在C中获取终端宽度?

    我一直在寻找一种从 C 程序中获取终端宽度的方法 我不断想出的是这样的东西 include
  • 如何使用 C 将带有 2 个变量的 IF 语句转换为 switch 函数?

    我有一个 IF 语句 我想将其转换为 Switch 语句 但它有 2 个变量 在C上可以实现吗 这是一个石头 剪刀 布的游戏 R代表石头 P代表布 S代表剪刀 char play1 play2 printf nPlayer 1 Enter
  • 在执行方法的括号内声明变量

    默认情况下 变量在方法执行之前定义 例如 DateTime myDate if DateTime TryParse date out myDate 我们可以实现内联声明 并且该变量可以在外部使用 例如 if DateTime TryPars
  • 删除行时 QModelIndex 变得无效

    我正在子类化QAbstractItemModel显示项目QTreeView 并且在这个子类中 projectModel 我有一个功能可以删除树视图中当前选定的索引 Component是用于表示模型所有成员的类 void projectMod
  • 如何在Unity中集成xAPI / TinCan

    我是 xAPI TinCan API 的新手 所以我的问题可能有点笼统 但到目前为止我还没有找到任何可以帮助我的东西 我认为可以将 xAPI 集成到 Unity 项目 游戏或模拟 中 但我到底该怎么做呢 我可以阅读有关 xAPI 和 Uni
  • 了解带有位移位的右移运算符

    我很难理解右移运算符 我理解左移 假设我们没有 int n 11 which is 1011 现在如果我们左移它n lt lt 1结果是 int a n lt lt 1 so a 10110 simply add a 0 to the en
  • 为什么 Clang 更喜欢主模板而不是 C++17 的专业化?

    下列program https godbolt org z f43EK4PnY从此代码中减少question https stackoverflow com questions 66740188 template
  • 论文中的概率密度函数,使用 C++ 实现,未按预期工作

    所以我正在实现一个启发式算法 并且我遇到了这个函数 我有一个 1 到 n 的数组 C 上的 0 到 n 1 w e 我想选择一些要复制到另一个数组的元素 给定参数 y 0 根据作者的说法 l 是一个随机数 0 所以我编写了函数的第一部分 对
  • bet365 网站上 Selenium 的 Chrome 驱动程序陷入灰屏

    当我尝试使用 Chrome 驱动程序和 Selenium 打开 bet365 网站时出现灰屏 var driver new ChromeDriver driver Navigate GoToUrl https www bet365 it 我
  • Unity构建错误

    所以我制作了我的游戏并尝试构建它 我收到一些对我来说毫无意义的错误 这是错误 UnityEditor BuildPlayerWindow BuildMethodException 2 个错误 在 UnityEditor BuildPlaye
  • C++ static constexpr 成员在类外重新声明

    对于以下代码 为什么 main 中的第一个案例无需重新声明 Foo bar 就可以正常工作 而带有该函数的第二个案例则需要它 struct Foo static constexpr int bar 30 Declaration of Foo
  • 无需使用abs函数或if语句即可获取绝对值

    我在想如何在不使用的情况下获得整数的绝对值if声明也不abs 起初我使用的是左移位 lt lt 试图将负号移出范围 然后将位右移回原来的位置 但不幸的是它对我不起作用 请让我知道为什么它不起作用以及其他替代方法 From 位摆弄黑客 htt
  • 为什么我可以使用 ret 退出 main?

    我即将弄清楚程序堆栈到底是如何设置的 我了解到用以下方式调用该函数 call pointer 实际上等同于 mov register pc programcounter add register 1 where 1 is one instr
  • 可以匹配具有任意小数位数的非零浮点数的最短正则表达式是什么?

    可以匹配具有任意小数位数的非零浮点数的最短正则表达式是什么 它应该接受像这样的数字 1 5 9652 7 00002 0 8 0 0500 0 58000 0 01 0 000005 0 9900 5 7 5 7 005 但拒绝诸如 02
  • 如何在 Windows 8 中使用 StreamWriter 写入文件?

    我在创建时遇到问题StreamWriter在windows 8中 通常我只是创建一个实例 只是传递一个字符串作为参数 但在Windows 8中 我收到一个错误 表明它应该接收一个Stream 但我注意到Stream是一个抽象类 有人知道吗编
  • 无限循环消耗 100% CPU

    我陷入了需要生成某个 Hz 的定义频率的情况 我尝试过多媒体计时器和互联网上提供的所有其他东西 但到目前为止 带有一些 if else 条件的无限循环给了我最好的结果 但这种方法的问题是它消耗了几乎所有的CPU 没有空间让其他应用程序正常工
  • 如何在 XAML 中自动调整列表视图的高度

    我的列表视图对象接收图像 ID 号和概要 概要的大小各不相同 因为有些有空格返回 我注意到 ListView 有一个可以设置的行高 我现在设置为 250 但它只能是一个固定值 那么会发生什么 我的网格对于 ListView 来说变得太大 导

随机推荐