据我了解,C# 通过引用将参数传递给方法。在 VB.NET 中,您可以使用 ByVal 和 ByRef 指定这一点。默认为 ByVal。

这是为了与 Visual Basic 6.0 兼容,还是只是随机的?另外,我如何指定在 C# 中使用什么?我有点喜欢按值传递参数的想法。

有帮助吗?

解决方案

C# 中的参数是 默认 按值传递。没有修饰符可以使其明确,但是如果您添加 ref / out 该参数是通过引用的。

这里通常令人困惑的是以下之间的区别:

  • 按值传递值类型(调用者看不到值类型的更改,但理想情况下值类型应该是不可变的)
  • 通过引用传递值类型(对值类型的更改对调用者来说是可见的,但理想情况下值类型无论如何应该是不可变的 - 非常重要,我会说两次;p)
  • 按值传递引用(更改为 字段/属性 引用类型的内容对调用者可见,但是 重新分配 新的/不同的对象的引用类型是 不是 可见的)
  • 通过引用传递引用(对字段/属性的更改, 重新分配引用对调用者可见)

其他提示

按值传递是C#中的默认值。然而,如果正在传递的变量是参考的类型,那么你正在使参考通过值。这也许是你的困惑的起源。

基本上,如果你通过值的引用,则可以改变它是指对象和这些变化将持续存在的方法外,但不能使变量指的是不同的对象,并且具有变化持续外方法

参数在C#默认通过 “BYVAL”。你如果想不同的行为指定“参考”或“OUT”。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top