读书人

ref与out关键字差异

发布时间: 2012-11-23 22:54:33 作者: rapoo

ref与out关键字区别
ref和out都是C#中的关键字,所实现的功能也差不多,都是指定一个参数按照引用传递。对于编译后的程序而言,它们之间没有任何区别,也就是说它们只有语法区别。总结起来,他们有如下语法区别:

1、ref传进去的参数必须在调用前初始化,out不必,即:
int i;
SomeMethod( ref i );//语法错误
SomeMethod( out i );//通过2、ref传进去的参数在函数内部可以直接使用,而out不可:
public void SomeMethod(ref int i)
{
int j=i;//通过
//...
}
public void SomeMethod(out int i)
{
int j=i;//语法错误
}
3、ref传进去的参数在函数内部可以不被修改,但out必须在离开函数体前进行赋值。


总结:
应该说,系统对ref的限制是更少一些的。out虽然不要求在调用前一定要初始化,但是其值在函数内部是不可见的,也就是不能使用通过out传进来的值,并且一定要赋一个值。也就是说函数承担初始化这个变量的责任。


给你个简单的解释说法吧。虽然不完全对。但是我可以让你理解OUT有什么作用。呵呵
举个例子。每个方法只能有一个返回值。但是你想有多个返回值,呵呵。OUT就起作用了啊。比如分页,不光返回数据源,还要返回总记录数
如:
public DataSet getData(out int count)
{
dataset ds=bll.getdata(10,20); 获取第11条到第20条数据。。但是不可能只显示 共有10条记录吧。呵呵。那么我们要用out了
int rcount=bll.GetCount();//比方说这个是取总记录数的。
count=rcount;
return ds;
}

显示的时候
public void showdata()
{
int count=0;
gridview1.datasource=getData(out count);
gridview1.databind();
label1.text="共有"+count.tostring()+"条记录";
}

读书人网 >Web前端

热点推荐