c# out关键字 vb_c# 关键字:ref 和 out

.NET Ref

Out

关键字

对于值类型。

如果不使用

ref /out

则传递的只是这些值的

COPY,

使用了

Ref

Out

的效果就几乎和

C

中使用了指针变量一样。

(

传递的就是原值

),

它能够让你直接对原数进行操作,而不是对那个原数的

Copy

进行操作

对于引用类型

:

如果不使用

ref /out,

因为传递的是引用类型的地址值

,

则将传递引用类型的地

址值的一个

COPY(--

针对地址值的角度还是值类型传递

),

实际上就是新开一个

不同的内存变量来存储这个地址值的拷贝

而使用

ref /out,

传递的还是引用类型的地址值

,

但是传递的就不是一个新变量

来存拷贝

,

而是就是传原来的那个应用类型的地址值

/

注意

list

的处理

不用关心

,

异步

,

代理委托这些

;

以和使用同步方法一样理解;只是正好遇到了这个例

子所以拿来用;

public

delegate

string

DelegateWithParameters(string

param1,

int

param2,

ArrayList list);

private void CallFooWithParameters()

{

// create the paramets to pass to the function

string strParam1 = "Param1";

int intValue = 100;

ArrayList list = new ArrayList();

list.Add("Item1");

// create the delegate

DelegateWithParameters delFoo =

new DelegateWithParameters(FooWithParameters);

//

call

FooWithParameters(string

param1,int

param2,

ArrayList

list)

//

实际上

list

的引用地址作为值类型传递

,

进入方法时

,

用一个新内存变量

存储这个引用的地址

//

所以在函数内部多该新内存变量地址修改

.

只是让该新内存变量指向了另

外一个

list

IAsyncResult tag =

delFoo.BeginInvoke(strParam1, intValue, list, null, null);

你可能感兴趣的:(c#,out关键字,vb)