`out` `ref` 'this' in C#

本文关键字:in this out ref | 更新日期: 2023-09-27 18:03:58

我是C#的新手,刚开始工作几天。我想知道outrefthis和其他任何带参数的关键词的确切用法,以及它们的实际作用。如果你能把它们和VB.Net的比较一下,那就很有帮助了。

`out` `ref` 'this' in C#

  • outref对应VB.NET中的ByRef。两者之间的区别在于out向编译器发出信号,表示该参数仅用于输出。这意味着它不需要事先有一个有意义的值(即它不需要初始化)。否则编译器会报错。

    在VB中,这是不相关的:未显式初始化的变量将自动初始化:Dim i As Integer将把i设置为0

  • this用于扩展方法,对应于在VB中使用Extension属性。

  • 最后,params对应于VB中的ParamArray,并且以完全相同的方式使用

out和ref是通过引用而不是通过值传递参数给方法的方法。如果你按值发送一个参数(没有在它的名字前面加上ref out),对被调用方法体中参数的任何改变都不会改变原始发送的参数。但是通过refor out发送参数,调用方法体中的任何更改都会改变原始发送的参数。

关于"这个"。每当你用这个调用一些方法或字段时,你实际上是在访问类字段或方法。

对于初学者来说,这里是所有c#关键字的列表。但是要解释你特别提到的那些。

  • "这";VB.net等价物:"我"。允许从实例内部访问实例。
  • "ref";VB.net等效:"ByRef"。通过引用将值传递给函数,而不是将值的副本传递给函数。这只适用于值类型(structs, int, double, byte等)。通过ref形参传递引用类型(类/对象)意味着你使指向对象的指针可修改。
  • "出";VB.net等同物:不确定,可能是ByRef。允许函数将值放入调用者传递给函数的特定变量中。这意味着变量不需要首先初始化为默认值,因为用out参数声明的函数需要为调用者初始化它。

VB进行比较。Net和c#可能对你有用