`out` `ref` 'this' in C#
本文关键字:in this out ref | 更新日期: 2023-09-27 18:03:58
我是C#
的新手,刚开始工作几天。我想知道out
、ref
、this
和其他任何带参数的关键词的确切用法,以及它们的实际作用。如果你能把它们和VB.Net
的比较一下,那就很有帮助了。
-
out
和ref
对应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#可能对你有用