繁体   English   中英

如何在C#中“做”ByVal

[英]How to 'do' ByVal in C#

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

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

默认情况下 ,C#中的参数按传递。 没有修饰符可以使其显式化,但如果添加ref / out则参数为by-reference。

这里通常的混淆是:

  • 按值传递值类型(调用者看不到值类型的更改,但理想情况下值类型应该是不可变的)
  • 通过引用传递值类型(对值类型的更改对调用者是可见的,但值类型理想情况下应该是不可变的 - 所以重要的是我会说两次; p)
  • 通过值传递引用(对于调用者可以看到对ref类型的字段/属性的更改,但是 ref-type 重新分配给新的/不同的对象是可见的)
  • 通过引用传递引用(更改为字段/属性, 重新分配引用对调用者可见)

传递值是C#中的默认值。 但是,如果传递的变量是引用类型,那么您将按值传递引用 这可能是你困惑的根源。

基本上,如果按值传递引用,则可以更改它引用的对象,并且这些更改将保留在方法之外,但是您不能使变量引用另一个对象并使该更改在方法之外保留。

默认情况下,C#中的参数传递“ByVal”。 如果您想要不同的行为,则必须指定“ref”或“out”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM