【发布时间】:2018-10-23 05:21:49
【问题描述】:
在 CancellationToken 的情况下使用结构而不是引用类型是否有意义?
我看到了一个可能的缺点,当我将它作为参数传递时,它会一直复制到方法链中。
同时,就结构而言,它可能被更快地分配和释放。
如果我们想让它不可变,我们可以使用只读属性或私有设置器。
那么它背后的想法是什么?
【问题讨论】:
-
虽然不是您的问题的直接重复,但对this 问题的接受答案可能会提供一些见解。
-
@pstrjds 这不是我问题的答案。我的问题不在于它是如何更新的,而是.net 架构师为什么决定它应该是一个结构。
-
@Neir0:我仍然对你的反对感到困惑。 结构与引用的大小相同。你是说,“一方面我们必须复制一个小的八字节引用,另一方面,我们必须复制结构的整个八字节 ”。这没有任何意义。你的反对意见是什么?
-
@Eric Lippert 我的错,我没有检查 CancellationToken 的确切大小,它真的很轻量级,我没想到它只有一个字段。感谢您的澄清。
-
@Servy 我听说一般建议值类型大约为 16 个字节,至少以防万一你想将它们作为参数传递。
标签: c# .net cancellation-token