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_c# 关键字:ref 和 out的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大工14秋《计算机应用基础》在线测试2,
- 下一篇: supermap iserver jav