C# 中的链接属性和意外结果

2024-02-16

我只是快速浏览了一下本文 http://blogs.msdn.com/ricom/archive/2006/09/07/745085.aspx(特别是关于为什么他选择使用结构/字段而不是类/属性)并看到这一行:

属性的结果不是真正的左值,因此我们不能执行 Vertex.Normal.dx = 0 之类的操作。属性的链接会产生非常意外的结果。

他所说的是什么样的意想不到的结果?


我想在 dbemerlin 的答案中补充一点,这里的关键是 Rico 的注释特性不是“左值”,或者我们在 C# 中所说的“变量”。

为了改变一个可变结构(理想情况下,你不应该这样做;可变结构通常会导致比它们解决的问题更多的问题),你需要改变一个variable。这就是变量is-- 内容发生变化的存储位置。如果你有一个向量类型的字段并且你说

Foo.vector.x = 123;

那么我们就有了一个值类型的变量——字段 Foo.vector——因此我们可以改变它的属性 x。但是如果你有一个值类型的属性:

Foo.Vector.x = 123;

the property不是变量。这相当于

Vector v = Foo.Vector;
v.x = 123;

它会改变临时变量 v,而不是支持该属性的任何存储位置。

如果放弃可变值类型,整个问题就会消失。要更改 x,请使用新值创建一个新向量并替换整个向量:

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

C# 中的链接属性和意外结果 的相关文章

随机推荐

  • 撤销授予我的应用 Google Drive API 的访问权限

    如何撤销已授予我的 Google 云端硬盘网络应用程序的访问权限 以便在用户下次使用时重新请求权限 要撤销您的访问令牌 您需要 GET 此网址 https accounts google com o oauth2 revoke token
  • Android:意图过滤器验证失败

    我的目标是让 Android 自动打开任何以test touchwonders com在我的应用程序中 我已将所需的文件放在我的服务器上 https test touchwonders com well known assetlinks j
  • Express 在 url 末尾奇怪地添加斜杠

    我正在使用 Node js 和 Express 框架来开发网站 我遇到了 url 的奇怪行为 当我单击相关链接 url 时 url 变为 localhost 3000 images 如您所见 末尾添加了斜杠 但是当我将所有 图像 更改为 i
  • Quarkus 异常处理程序

    quarkus 提供异常处理程序吗 我想要像 Spring 的 ControllerAdvice 这样的东西 https www baeldung com exception handling for rest with spring ht
  • 渲染自定义属性 KNP 菜单

    有没有办法在 KNP 菜单包中呈现自定义属性 如下所示 menu factory gt createItem Role ROLE PROGRAM EVENT PLANNER array route gt show form events a
  • 同步并发请求以共享缓慢操作的结果

    我有一个 Java UI 服务 它有一个 API 方法 该方法调用一个相对较慢的操作 比如大约 30 秒 该操作是无参数的 但它对随时间变化 相对缓慢 的外部数据进行操作 该方法返回最新结果并不重要 如果它们是 30 秒的旧结果 那就可以接
  • 如何将 PHP in_array 与关联数组一起使用?

    是否有任何php函数 例如in array 用于通过mysql函数 mysql fetch assoc 获得关联数组 例如 如果我有一个如下所示的 array array 0 gt array ID gt 1 name gt Smith 1
  • 在 HTML 与 CSS 中指定页面加载的图像尺寸

    我很久以前就从某个地方了解到 指定宽度和高度 img HTML 文档中的元素可以加快并改善页面加载体验 并且通常遵循以下做法 img src width 100 height 100 我现在面临的情况是 单个页面上有大量图像 我更喜欢通过
  • 从 Azure VM 打开活动 FTP 连接

    我正在尝试通过 Azure VM 的活动连接连接到远程 FTP 服务器 我收到的错误是 非法 PORT 命令 我使用被动连接连接到其他 FTP 站点没有问题 但此 FTP 服务器仅支持主动连接 我的问题基本上与这个问题 https serv
  • 如何使用php从周数中查找月份号、名称

    如何使用php从周数中查找月份号 名称 如果您有ISO week http en wikipedia org wiki ISO week date数字 然后获取您可以使用的月份 一周的开始 strtotime http php net st
  • 事务管理和 CDI

    我想用CDI 我通常使用Spring 开发一个应用程序来发现这项技术 我读过很多关于 CDI 的文章来了解它是如何工作的 我有一个关于事务管理的简单问题 例如数据库中的持久性 是否必须使用 EJB 3 1 来进行事务管理 或者是否可以仅使用
  • R 闪亮的数据表列用线分割

    我在闪亮的服务器中生成一个数据表 如下所示 x renderTable rownames FALSE 并有一个像这样的用户界面 tableOutput x 现在我希望每隔一列就有一个分割标记为线条 例如 a b c d e 1 2 2 3
  • 了解 XDR 规范以创建 *.x 文件

    我浏览了互联网上的几个网站 实际上想知道我们如何在规范中编写规范 x文件以生成等效函数 通常 您可以从 x 文件生成三 组 代码 消息 xdr 编码器 解码器函数 客户端存根和服务器存根 当然 您也可以手动完成 但要做到正确的工作量太大 使
  • 如何从文件名中删除文件扩展名(VBA)

    我有一个文件名变量 其中包含 Filename csv 要从我使用的路径中提取文件名 Filename Dir fStr where fStr从我选择的文件中检索 我只需要文件名而不需要 csv 我该如何删除 csv 扩大 最好使用类似的函
  • 如何使用 传递附加信息?

    我需要将文件上传到在 tomcat 上运行的 servlet 除了文件之外 我还想允许用户添加与上传的文件关联的评论 我尝试了以下方法 但没有成功
  • bluez5 中哪个工具取代了 gatttool?

    好像自从commit b1eb2c4cd057624312e0412f6c4be000f7fc3617 gatttool已被弃用 但我找不到任何信息 什么取代了 gattool 我在 gatttool 上研究过的每个 Python 蓝牙 L
  • 使用索引数据计算非结构化文档中的所有唯一单词

    我已将非结构化 HTML 文档加载到 Marklogic 中 并且 对于任何给定的文档 URI 我需要一种使用索引 词典来提供所有唯一单词的字数统计的方法 例如 假设我有以下文件 保存在 URI html example html 下 h1
  • C++ 中的可空值

    我正在用本机 C 创建数据库访问层 并且正在寻找支持 NULL 值的方法 这是我到目前为止所拥有的 class CNullValue public static CNullValue Null static CNullValue nv re
  • UITextView contentInset 在 iOS 7 上的 UITextView 中不起作用?

    我正在尝试设置一个UITextView s contentInset财产 这样做时 UIEdgeInset s top变量工作得很好 所以 self textView setContentInset UIEdgeInsetsMake 50
  • C# 中的链接属性和意外结果

    我只是快速浏览了一下本文 http blogs msdn com ricom archive 2006 09 07 745085 aspx 特别是关于为什么他选择使用结构 字段而不是类 属性 并看到这一行 属性的结果不是真正的左值 因此我们