gpt4 book ai didi

c# - 就地更改值而不是创建新实例

转载 作者:太空宇宙 更新时间:2023-11-03 14:36:28 25 4
gpt4 key购买 nike

基本上我检查了 xna 和一些 slimdx (Promit :)),它有很多结构。几乎所有看起来像这样的方法:

public static Vector3 operator + ( Vector3 a, Vector3 b )

在哪里做这样的事情:

Vector3 c = new Vector3 ( ... )

我想知道这样做是否有意义:

a.X += b.X
...

return a

显然#1 看起来更明智/合理,但#2 没有创建更快的新 Vector3。

我认为它既快速又清晰,甚至不如 #1 更清晰。

哪个更好? #2 有什么问题吗?

最佳答案

2 的唯一问题是,由于 Vector3 是值类型(有充分的理由,请参阅 Rico Mariani's blog 了解详细信息),当它们是集合的一部分或用作属性时,您无法就地编辑成员(member)。

例如,拥有一个 List 成员是很常见的,但是如果您这样做:

myList[150].X += ...;

它失败了,因为索引器返回一个新结构(值类型语义)。将值类型视为不可变通常更安全,这需要您的第一个语法。

关于c# - 就地更改值而不是创建新实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/813543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com