为什么 C# 中的类没有循环布局问题?

2024-01-04

public struct Unit
{
    Unit u;
}

Causes:

“Unit”类型的结构成员“Unit.u”导致结构中发生循环 布局。

But

public class Unit
{
    Unit u;
}

编译。我明白我想的问题。引用a时会形成死循环Unit对象,因为它必须初始化另一个成员Unit等等。但为什么编译器只是为了限制这个问题structs?问题是否仍然存在class也?我错过了什么吗?


问题在于layout.

When Unit是一个结构体,a 的任何值Unit必须包含相同类型(因此大小相同)的另一个值,无穷无尽。这不可能。我想你可能会争辩说,没有其他领域,领域Unit不应该占用任何内存,所以你could将其包含在其自身中 - 但我相信 CLR 的工作方式可确保所有结构至少占用 1 个字节...

When Unit是一个类,一个Unit对象只需要包含一个参考到另一个Unit目的。没有存储问题,并且该值一开始可以为空。

可以这样想:你不可能拥有一栋房子,其中包含另一栋按照相同蓝图建造的房子,但你当然可以拥有一栋房子,其中包含一张纸,上面有类似房子的地址......

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

为什么 C# 中的类没有循环布局问题? 的相关文章

  • 实体框架中的重复键异常?

    我试图捕获当我将具有给定用户名的现有用户插入数据库时 引发的异常 正如标题所说 我正在使用 EF 当我尝试将用户插入数据库时 引发的唯一异常是 UpdateException 如何提取此异常以识别其是否是重复异常或其他异常 catch Up
  • .NET Windows 服务中调用 C# 的 wait 的 I/O 回调是否可以不阻塞?

    我知道在 ASP NET 中 当使用 wait 时工作线程会返回到池中 而 I O 发生在后台 这对于可扩展性非常有用 我的 Windows 服务是一个套接字服务器 它使用 Begin End 样式的异步套接字 I O 混合我的魔法 我知道
  • 从 .Net 将简单数据插入 Excel 文件的最简单方法

    我有一个 Excel 文件 大约有 10 列和 1 20 行 我需要插入 1 20 行包含各种数据元素 我想知道是否有一种方法可以将一些标签放入 Excel 文件中 以便可以找到并替换它们 将列标记为 名称 的东西 这样我就可以在代码中说
  • 如何将 C++ 类包装在基于 C 的 dll 或基于 CLI 的 dll 中?

    我被告知将我用 C 编写的类导入到 dll 中 然后在 c 应用程序中使用该 dll 下列的本指南 https stackoverflow com questions 4555961 how to use a class in dll我创建
  • 浏览器收集哪些值作为回发数据?

    当页面被发送回服务器时 浏览器收集每个控件的当前值并将其粘贴到一个字符串中 然后 该回发数据通过 HTTP POST 发送回服务器 Q1 除了控件的 Text 属性和 SelectedIndexchanged 因此除了用户输入数据 之外 控
  • 禁用除滚动之外的 DataGridView

    我如何配置 datagridview 以便用户只能在行中移动并使用滚动 而没有其他 如果我禁用网格不允许我使用滚动 将您的 datagridview 设置为只读 这将禁用任何编辑 dataGridView1 ReadOnly true 在你
  • 如何在 C++ 的子目录中创建文件?

    这是我的代码 如何在子目录联系人中创建文件 每次创建该文件时 它都会出现在与我的程序相同的目录中 int main ofstream myfile contacts myfile open a myfile close 在构造函数中指定完整
  • 未定义异常变量时通过引用捕获

    捕获异常时 标准指导是按值抛出 按引用捕获 据我了解 这有两个原因 如果由于内存不足异常而引发异常 我们将不会调用可能终止程序的复制构造函数 如果异常是继承层次结构的一部分 我们可能会对异常进行对象切片 如果我们有一个场景 我们没有在 ca
  • 我们应该使用 Eval 还是 Databind 事件?

    当使用 Asp Net 并使用 ListView 等控件创建网站时 使用 Eval 命令是一个好习惯吗 还是应该在 databind 事件中填充文字和数据 取决于您是否想在更新事件上写回数据 在这种情况下数据绑定 如果您只想读取该数据 可以
  • 使用 Microsoft Graph 创建用户

    如何使用 Microsoft graph 创建用户 因为我在保存过程中遇到了权限失败的问题 我确实有几个问题 在图中调用创建用户 API 将在哪里创建用户 是在 Azure AD 还是其他地方 我尝试通过传递 json 和必需的标头来调用创
  • C++ 析构函数:何时释放内存?

    如果我删除一个导致其析构函数被调用的对象 那么内存是在析构函数完成函数中的任何操作之前还是之后被释放 仅当最小派生类子对象被销毁后才会释放内存 所以如果你有 class Base class Derived public Base publ
  • 使用对象列表构建树

    我有一个带有属性 id 和parent id 的对象列表 我想建造一棵树来连接那些孩子和父母 1 个父对象可以有多个子对象 并且有一个对象将成为所有对象的祖先 实现该功能最快的算法是什么 我使用 C 作为编程语言 但其他语言也可以 像这样的
  • 如何使用 C# 代码使用超链接的 onClick 事件?

    我正在尝试为页面中的超链接添加条件 而不是仅仅使用特定的链接 例如 a href help Tutorial html Tutorial a 我想为不同的用户显示不同的页面 例如 如果用户以管理员身份登录 他们将看到与普通用户不同的链接 我
  • 在 C# 中生成随机值

    如何使用以下命令生成随机 Int64 和 UInt64 值RandomC 中的类 这应该可以解决问题 这是一个扩展方法 因此您可以像调用普通方法一样调用它Next or NextDouble上的方法Random目的 public stati
  • 函数模板重载解析期间的 MSVC 与 Clang/GCC 错误,其中一个函数模板包含参数包

    当我使用参数包时 我注意到这样一种情况 如下所示 在 gcc 和 clang 中编译得很好 但在 msvc 中却不行 template
  • fscanf 和 EOF 中的否定扫描集

    我的文件中有一个以逗号分隔的字符串列表 姓名 1 姓名 2 姓名 3 我想跳过所有逗号来阅读这些名字 我写了以下循环 while true if fscanf file my string 1 break 然而 它总是比预期多执行一次 给定
  • 如何使用eclipse构建C++应用程序

    我已经从以下位置下载了 Eclipse Juno for C here http www eclipse org downloads download php file technology epp downloads release ju
  • 停止 TcpListener 的正确方法

    我目前正在使用 TcpListener 来处理传入连接 每个连接都有一个线程用于处理通信 然后关闭该单个连接 代码如下 TcpListener listener new TcpListener IPAddress Any Port Syst
  • 为什么从绑定返回的对象会忽略额外的参数?

    假设我有一个带有两个参数的函数 void f int x int y 我想绑定其中之一 我可以用std bind如下 auto partiallyBoundF std bind f 10 1 partiallyBoundF仅需要一个参数 但
  • C 中的静态和动态绑定(严格来说是 C,而不是 C++)是什么?

    我最初对发布这个问题感到担忧 以免它重复 但即使在谷歌搜索了许多关键字之后 我在 StackOverflow 上找不到任何解释 C 的静态和动态绑定的链接 尽管有 C 的问题和答案 但是都涉及classes以及显然不适合 C 的东西 Sta

随机推荐

  • 在 VTable 上下文中,虚拟方法调用和直接方法调用有什么区别?

    在 VTable 上下文中 虚拟方法调用和直接方法调用有什么区别 在虚拟和直接调用的情况下如何解决方法引用 理论上 不存在这样的东西 C 标准没有定义它 定义了虚拟调用 但没有指定它们必须如何工作 不存在像VTable这样的东西 在实践中
  • 计算 R 中矩阵的成对差异数

    我有以下矩阵 0 1 0 0 0 1 0 0 Row A 0 1 0 0 0 0 1 0 Row B 0 1 0 0 0 0 0 0 Row C 0 0 1 0 0 0 0 0 Row D 我想制作一个新的矩阵 显示每行之间的成对差异 例如
  • GHC生成的.hi、.p_hi和.dyn_hi文件有什么区别

    我正在尝试减少包含 Nix 派生的存档的大小 我注意到每个模块都有 3 个文件 hi p hi 和 dyn hi 大小都相似 ghc 提示 解释器只需要 hi 如果我删除其余变量 则什么也不会发生 那么 p hi 和 dyn hi 是沙袋吗
  • 在 Django 中使用 formset_factory

    我是 Django 的新用户 我使用以下代码生成表单 class GetMachine forms Form Machine Name forms CharField max length 20 Number of lines forms
  • 如何限制Python 3中多线程程序中的API调用?

    经过大量研究 我不确定最佳实践是什么 我的以下想法是否合适 我想要访问一个 API 该 API 将我可以进行的调用总数限制为每分钟 50 次 我的程序有多个独立运行的线程 如何限制我的程序保持在阈值以下 我的想法是创建一个队列 并每 X 秒
  • 优化与未优化构建的 KCachegrind 输出

    I run valgrind tool callgrind executable在由以下代码生成的可执行文件上 include
  • 未知的底部 blob“数据”(层“conv1”,底部索引 0)

    尝试在我自己的数据集上训练 LeNet 我从长一维矢量数据集生成了 HD F5 文件 并创建了 HDF5 数据层 如下所示 我对顶部 blob 的命名与生成 HDF5 时的命名相同 name Test net layer name data
  • 导出大型 MySql 表

    我在 MySql 中有一个表 我使用 PhpMyAdmin 进行管理 目前约有 960 000 行 我有一个老板喜欢看Excel中的数据 这意味着每周我都要将数据导出到Excel中 我正在寻找一种更有效的方法来做到这一点 因为我实际上无法一
  • Pattern.matches() 针对 char 数组,无需在 java 中转换为 String

    Scenario 我需要根据字符数组检查正则表达式模式 char 出于安全考虑 我不允许将字符数组转换为字符串 Java 的 Pattern matches 方法旨在获取模式和字符串 另外 正则表达式模式是从另一个来源传递给我的 并且会发生
  • AWS ELB 中的双栈前缀是什么意思?

    当我在 AWS Route 53 中添加 ELB 作为别名目标时 它会自动添加dualstack我的 ELB DNS 的前缀 这代表什么 当我尝试时dig 两者都返回相同的端点 注意 这是一个内部负载平衡器 The dualstackDNS
  • 可以让 WinDBG 在符号存储中找到 mscordacwks.dll 吗?

    问题 有很多手动方法可以让 WinDBG 在没有符号存储的情况下找到 mscordacwks dll 将文件放在某个路径中 将其放在与 Windbg exe 相同的文件夹中 将其放在我的 Framework v 文件夹中 在使用WinDBG
  • 图书馆的数据库架构

    我正在为我的大学的一个部门设计一个图书馆管理系统 我想吸引您关注我提出的架构 这篇文章主要涉及我们如何存储每本书的多个副本 我设计的一些东西让我感到不舒服 我希望你们都能指出更好的方法来解决问题 为了处理用户借书的情况 我设计了三个表 bo
  • 带有客户端 haml 的 angularjs

    我刚刚开始在 Rails 应用程序中使用 AngularJS 并且由于我习惯在 Rails 中使用 haml 模板 所以我想在客户端对 AngularJS 执行相同的操作 问题是我不知道在 haml 文件中读取哪里 我有一个供投资者使用的模
  • CoreMotion 姿态参考系

    有什么区别startDeviceMotionUpdatesUsingReferenceFrameCM态度参考框架 X任意Z垂直 X任意校正Z垂直 X磁北Z垂直 X真北Z垂直 Here is 苹果文档 https developer appl
  • C#从MYSQL读取Mediumblob数据类型

    我在 MYSQL Server 中有一个数据库 有一个表存储图像及其信息 该图像的数据类型是 Mediumblob 我需要读取它并存储在 byte 中 但我不知道该怎么做 有人对这种情况有解决方案吗 非常感谢 Regards 查看来自的示例
  • 在 JPanel 内绘制 JComponent

    我正在尝试在 JPanel 内显示 JComponent 我使用空布局 因为组件的位置可以在运行时更改 并且我必须控制它们 但下面的代码不起作用 如果我显式调用 paintComponent 方法 JComponent 仅在显示时变得可见
  • 如何快速从列表中删除项目

    我正在寻找一种快速从 C 中删除项目的方法List
  • 如何在本地查看git中项目的Github网络视图?

    我觉得有点荒谬 我必须将分支推送到 Github 才能查看我可以使用的内容 有没有办法在 git 本地获得用户友好的视图 The git log branches remotes tags graph oneline decorate并不真
  • Tibco EMS 协议

    我正在尝试使用 Node js 与 Tibco EMS 服务器进行交互 并且很好奇是否可以仅在 Node js 中使用完全开源的解决方案 我不想使用 Tibco 的 Web Messaging 解决方案 那么这让我们想到 Tibco EMS
  • 为什么 C# 中的类没有循环布局问题?

    public struct Unit Unit u Causes Unit 类型的结构成员 Unit u 导致结构中发生循环 布局 But public class Unit Unit u 编译 我明白我想的问题 引用a时会形成死循环Uni