在不存在的struct布局中循环

2024-02-27

这是我的一些代码的简化版本:

public struct info
{
    public float a, b;
    public info? c;

    public info(float a, float b, info? c = null)
    {
        this.a = a;
        this.b = b;
        this.c = c;
    }
}

问题是错误Struct member 'info' causes a cycle in the struct layout.我追求类似值类型行为的结构。我可以使用类和克隆成员函数来模拟它,但我不明白为什么我需要这样做。

这个错误怎么可能是真的呢?在某些类似的情况下,递归可能会导致永远的构造,但在这种情况下我想不出任何可能的方法。下面是一些示例,如果程序能够编译的话应该没问题。

new info(1, 2);
new info(1, 2, null);
new info(1, 2, new info(3, 4));

edit:

我使用的解决方案是使“info”成为一个类而不是一个结构,并为其提供一个成员函数以返回我在传递它时使用的副本。实际上,模拟与结构相同的行为,但使用类。

我在寻找答案时还创建了以下问题。

C# 中的值类型类定义? https://stackoverflow.com/questions/9297114/value-type-class-definition-in-c


拥有一个包含自身作为成员的结构是不合法的。这是因为结构体有固定尺寸,并且它必须至少与其每个成员的大小之和一样大。你的类型必须有 8 个字节用于两个浮点,至少一个字节来显示是否info为空,加上另一个的大小info。这给出了以下不等式:

 size of info >= 4 + 4 + 1 + size of info

这显然是不可能的,因为它需要您的类型无限大。

您必须使用引用类型(即类)。您可以使您的类不可变并覆盖Equals and GetHashCode提供类似价值的行为,类似于String class.

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

在不存在的struct布局中循环 的相关文章

  • 用于代数简化和求解的 C# 库 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 网络上有很多代数求解器和简化器 例如 algebra com 上不错的代数求解器和简化器 然而 我正在
  • 每个托管线程是否都有自己对应的本机线程?

    我想知道是否在 Net 中创建托管线程 通过调用Thread Start 导致在后台创建一个本机线程 那么托管线程是否有对应的本机线程呢 如果是 当托管线程等待或睡眠时 是否意味着相应的本机线程也在等待或睡眠 是的 NET 线程映射到所有当
  • 未提供参数时如何指定 C# System.Commandline 行为?

    在我的控制台应用程序中 当未提供控制台参数时 将执行我指定列表 在本例中为参数 3 的任何处理程序 调用该处理程序时 布尔参数设置为 false 但对我来说 根本不调用它更有意义 如何防止这种情况发生并显示帮助文本 using System
  • 如何将非静态类成员“std::bind”绑定到 Win32 回调函数“WNDPROC”?

    我正在尝试将非静态类成员绑定到标准WNDPROC http msdn microsoft com en us library ms633573 aspx功能 我知道我可以通过将类成员设为静态来简单地做到这一点 但是 作为一名 C 11 ST
  • 计算 Richtextbox 中所有单词的最有效方法是什么?

    我正在编写一个文本编辑器 需要提供实时字数统计 现在我正在使用这个扩展方法 public static int WordCount this string s s s TrimEnd if String IsNullOrEmpty s re
  • MVC 在布局代码之前执行视图代码并破坏我的脚本顺序

    我正在尝试将所有 javascript 包含内容移至页面底部 我正在将 MVC 与 Razor 一起使用 我编写了一个辅助方法来注册脚本 它按注册顺序保留脚本 并排除重复的内容 Html RegisterScript scripts som
  • 如何创建包含 IPv4 地址的文本框? [复制]

    这个问题在这里已经有答案了 如何制作一个这样的文本框 我想所有的用户都见过这个并且知道它的功能 您可以使用带有 Mask 的 MaskedTestBox000 000 000 000 欲了解更多信息 请参阅文档 http msdn micr
  • 如何使用 LINQ2SQL 连接两个不同上下文的表?

    我的应用程序中有 2 个数据上下文 不同的数据库 并且需要能够通过上下文 B 中的表的右连接来查询上下文 A 中的表 我该如何在 LINQ2SQL 中执行此操作 Why 我们正在使用 SaaS 产品来跟踪我们的时间 项目等 并希望向该产品发
  • 我可以使用 moq Mock 来模拟类而不是接口吗?

    正在经历https github com Moq moq4 wiki Quickstart https github com Moq moq4 wiki Quickstart 我看到它 Mock 一个接口 我的遗留代码中有一个没有接口的类
  • 如何检测表单的任何控件的变化?

    如何检测 C 中表单的任何控件的更改 由于我在一个表单上有许多控件 并且如果表单中的任何控件值发生更改 我需要禁用按钮 我正在寻找一些内置函数 事件处理程序 属性 并且不想为此创建自定义函数 不 我不知道任何时候都会触发任何事件any控制表
  • 如何在 Xaml 文本中添加电子邮件链接?

    我在 Windows Phone 8 应用程序中有一些大文本 我希望其中有电子邮件链接 例如 mailto 功能 这是代码的一部分
  • C# 中的合并运算符?

    我想我记得看到过类似的东西 三元运算符 http msdn microsoft com en us library ty67wk28 28VS 80 29 aspx在 C 中 它只有两部分 如果变量值不为空 则返回变量值 如果为空 则返回默
  • 外键与独立关系 - Entity Framework 5 有改进吗?

    我读过了several http www ladislavmrnka com 2011 05 foreign key vs independent associations in ef 4 文章和问题 https stackoverflow
  • 动态添加 ASP.Net 控件

    我有一个存储过程 它根据数据库中存储的记录数返回多行 现在我想有一种方法来创建 div 带有包含该行值的控件的标记 如果从数据库返回 10 行 则 10 div 必须创建标签 我有下面的代码来从数据库中获取结果 但我不知道如何从这里继续 S
  • 将 MQTTNet 服务器与 MQTT.js 客户端结合使用

    我已经启动了一个 MQTT 服务器 就像this https github com chkr1011 MQTTnet tree master例子 该代码托管在 ASP Net Core 2 0 应用程序中 但我尝试过控制台应用程序 但没有成
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • 无法接收 UDP Windows RT

    我正在为 Windows 8 RT 编写一个 Windows Store Metro Modern RT 应用程序 需要在端口 49030 上接收 UDP 数据包 但我似乎无法接收任何数据包 我已按照使用教程进行操作DatagramSock
  • WebSocket安全连接自签名证书

    目标是一个与用户电脑上安装的 C 应用程序交换信息的 Web 应用程序 客户端应用程序是 websocket 服务器 浏览器是 websocket 客户端 最后 用户浏览器中的 websocket 客户端通过 Angular 持久创建 并且
  • 如何将 PostgreSql 与 EntityFramework 6.0.2 集成? [复制]

    这个问题在这里已经有答案了 我收到以下错误 实体框架提供程序类型的 实例 成员 Npgsql NpgsqlServices Npgsql 版本 2 0 14 2 文化 中性 PublicKeyToken 5d8b90d52f46fda7 没
  • 当我使用 OpenSSL1.1.0g 根据固定的 p 和 g 值创建 Diffie Hellman 密钥协议密钥时,应该执行哪些检查?

    您好 我尝试通过这段代码使用修复 p 和 g 参数来制作 Diffie Hellman Keysanswer https stackoverflow com a 54538811 4706711 include

随机推荐

  • 显示 Pandas 数据框的所有行和列[重复]

    这个问题在这里已经有答案了 我正在 Visual Studio 代码中使用 python 3 和 pandas 包 但 print 函数无法正确显示 例如 当我使用 df head 时 它看起来不错 但是 如果我使用 print 语句 我将
  • 在哪里可以找到被新功能弃用的 Android 功能列表?

    Android 开发者网站中是否有某些内容显示了 API 中的某些附加功能已弃用的内容 例如 一个人如何知道 Fragment 不赞成使用什么内容 Update 新的发行说明可以在此处的新 URL 上以更易于阅读的格式获取 https de
  • 从字符串中删除非 utf8 字符

    我在从字符串中删除非 utf8 字符时遇到问题 这些字符无法正确显示 字符是这样的 0x97 0x61 0x6C 0x6F 十六进制表示 去除它们的最佳方法是什么 正则表达式还是其他什么 如果您申请utf8 encode 对于已经是 UTF
  • 带有计算属性名称的 Typescript setState

    我正在使用 Typescript 2 1 我有一个带有 2 个数字集合的状态的 React 组件 我不想重复 addItem 和 removeItem 方法并希望它们是通用的 这是代码 type Collection challenges
  • 如何将 pyinstaller 与 pipeline/pyenv 一起使用

    我正在尝试从我的 python 脚本中发送一个可执行文件 该脚本位于使用 pipelinev 的虚拟环境中 它再次依赖 pyenv 进行 python 版本控制 为此 我想要使用 pyinstaller 我做了什么 pipenv insta
  • 如何使用 Amazon Marketplace Web Service (Amazon MWS) API 更新产品价格

    只是试图找出更新亚马逊市场商店的产品价格有多容易 或者可能有多困难 经过一番搜索后 我找到了有关的文档 亚马逊商城网络服务 亚马逊MWS https developer amazonservices com gp mws docs html
  • TcpClient 开始连接超时

    如何在 C 中为 BeginConnect 异步调用设置自定义超时 它非常有用 当连接到主 机时有可能不侦听给定端口 每个这样的调用在释放线程之前都会浪费大约 15 秒的时间 我有以下代码 正如许多 stackoverflow 答案中所建议
  • 访问自定义元素的子节点?

    这可能有点令人困惑 我正在尝试从我的自定义元素访问innerHTML 或childNodes 是否可以从Web组件导入文件访问原始DOM结构 在 AttachShadow 之前 在下面的示例中 我尝试从 jookah gallery 导入文
  • 如何在不使用_setmode的情况下在C++中输出unicode

    我正在尝试将 unicode 值 在本例中为 u250F 或 插入到控制台输出 我四处搜寻 人们推荐了各种各样的东西 在我们讨论我的尝试之前 我使用的是 Windows 和 Visual Studio 2013 主要错误 当我尝试多个 修复
  • 常量字符串数组[重复]

    这个问题在这里已经有答案了 可能的重复 声明一个常量数组 https stackoverflow com questions 5142349 declare a const array 我需要类中的常量字符串数组 就像是 public cl
  • PHP版本升级导致类构造函数出现问题

    我刚刚升级了我的 PHP 版本v5 3 1 to v5 3 9 突然 类构造函数开始不起作用 有任何想法吗 您可能正在使用带有类名的构造函数而不是 construct 关键词 请参阅此处 v5 3 3 中的行为更改 http www php
  • 从字符串中查找单词的下一个单词

    我编写了以下代码来从 Java 字符串中获取下一个单词 我觉得它非常原始 我不应该为此编写这么多代码 但找不到任何其他方法 想知道是否有更好的方法可以做到这一点 public static String getNextWord String
  • 如何转义 f:selectItem itemLabel 属性

    如何逃脱f SelectItem itemLabel属性以便我可以在标签中添加超链接 使用以下代码 我能够逃脱h outputText但不是f selectItem
  • 如何计算弹簧圈数?

    在参照 如何检测和计算螺旋的圈数 https stackoverflow com questions 13563880 c sharp wpf emgu how to detect and count a spirals turns 即使在
  • Bootstrap Popover 内容中的外部 HTML 文件

    当我使用 iframe 在弹出窗口内容中加载外部 html 文件时 它限制弹出窗口的高度 但我希望弹出高度是自动的 有人帮帮我吧 document ready function pop right popover title Loading
  • 捕获以毫秒为单位的时间

    下面的代码用于打印日志中的时间 define PRINTTIME struct tm tmptime time t tmpGetTime time tmpGetTime tmptime localtime tmpGetTime cout l
  • PyMongo [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书

    我正在使用 Python 3 9 5 和 PyMongo 3 11 4 我的MongoDB数据库版本是4 4 6 我使用的是 Windows 8 1 我正在学习 MongoDB 并且在 Atlas 中设置了一个集群并连接到该集群 每当我尝试
  • 部署到 github 页面的 create-react-app 链接出现 404 错误

    我正在尝试将 create react app 部署到具有自定义域的 GitHub 页面上的相对路径 例如 www example com myproject 我在用着react router dom react router redux
  • 指针到底存储什么? (C++)

    我知道指针存储它们指向的值的地址 但是如果将指针的值直接显示到屏幕上 您会得到一个十六进制数 如果该数字正是指针存储的数字 那么当说 pA pB both are pointers 你正在复制地址 那么在处理像这样的非常小的项目时 使用指针
  • 在不存在的struct布局中循环

    这是我的一些代码的简化版本 public struct info public float a b public info c public info float a float b info c null this a a this b