C sharp out关键字

https://yutuo.net/archives/5e98cb8b74d6363b.htmlhtml

在C#中,我常常用到refout这两个关键字,但对其区别也还不是很清楚。函数

基本上来讲,C#函数参数的传递方法为分两种,一种转值,另外一种是传址。对于不加任何修饰的函数参数来讲,它都是传值的。传值又分为两种,一种是传对象值,另外一种是传地址值。对于值类型System.ValueType(包括这两种structenum,C#中的intdouble等基本类型都是struct)来讲是传对象值,对于其它对象来讲是传地址值。.net

在加了修饰refout以后,函数参数就是传址的。虽然二者都是传址参数,但二者仍是有区别的,用最简单的一句说来讲:ref是能进能出,out是能出不能用。就是说ref是能够把值传入函数里,而且能够输出函数外,因此它主要用于函数内部须要对外部值进行修改的时候;out不能把值传入函数,只能作为输出,它主要用于函数须要返回多个值的时候。code

要注意的有如下两点:htm

  1. 使用ref型参数时,在调用函数前必须初始化(设置过值);使用out型参数时,必须在函数内对其初始化(设值)。
  2. 使用refout时,函数的定义和调用函数时,参数前都要加refout关键字。
相关文章
相关标签/搜索