【发布时间】:2021-09-14 17:29:21
【问题描述】:
我知道关于这个主题的问题有不同的帖子,但我找不到任何关于我的问题的来源。
在某些情况下,如果值类型表现为引用类型,会更容易,即可以在另一个方法中修改它们。
例如,我想跟踪 int 类型的一些值类型并将其中的几个传递给一个方法,该方法可能会修改它们。让我们假设,在执行该方法后,我需要在调用方使用更新的值。当然有多种方法可以实现这一点,但问题是将这些integers 传递给一个可以返回void 的方法会简单得多,但我们仍然可以获得那些integers 的更新值,因为我们持有引用。
据我所知,C# 中没有这样的包装器/类可以代表与值类型相同的体验,但仍是引用类型。 (例如int,包装器还是应该做++,--,范围相同等)
所以我的问题是为什么语言中没有这样的选择?我的假设是因为模棱两可,并且有一种直接的方式来做事。并摆脱比较两个不同类型的相等值等一些小麻烦。如果有人真的需要,他/她可以实现。
你对这个话题有什么看法?为什么语言不应该有这种值类型的包装器?
【问题讨论】:
-
你的意思是通过ref吗?
public void SomeFunction(ref int valueToModify) -
refoutin可以帮到你 -
是的,您可以这样做,但您不能将这些修饰符与异步方法一起使用
-
这能回答你的问题吗? ref and out arguments in async method
-
您是否正在搜索与
Tuple<T>等效的mutable?
标签: c# .net value-type reference-type language-specifications