asp.net2.0关键字问题

来源:百度知道 编辑:UC知道 时间:2024/09/28 06:47:36
参数用ref,out,parms修饰 有什么好处 在什么情况下这样用 在这里这样写是什么意思
请教 高手 跟我解释 刚学asp.net2.0不久 谢谢
public void ClearCart(ref ShopcartEntity cart)
{
cart.Goods.Clear();
}

先看这么个方法:
public void ClearCart(ShopcartEntity cart)
{
cart.Goods.Clear();
}
这里方法中传递的是cart的值.方法获得的是这个值的一个拷贝,然后使用这个拷贝,当方法运行完毕后,这些拷贝将被丢弃,而原来的值不将受到影响.就是说,cart参数只是路过ClearCart,除了ClearCart被调用,它没办法影响到cart.

当我们需要改变原来变量中的值时,就有
public void ClearCart(ref ShopcartEntity cart)
{
cart.Goods.Clear();
}
这时,我们向方法传递变量的引用,而不是变量的值.引用是一个变量,他可以访问原来变量的值,修改引用将修改原来变量的值.变量的值存储在内存中,可以创建一个引用,他指向变量在内存中的位置.当引用被修改时,修改的是内存中的值,因此变量的值可以将被修改.当我们调用一个含有引用参数的方法时,方法中的参数将指向被传递给方法的相应变量,因此,我们会明白,为什么当修改参数变量的修改也将导致原来变量的值.就是说,当cart经过ClearCart时,它已经被改变为方法内的值了.

这就是ref和out的使用情况,ref和out似乎可以实现相同的功能.因为都可以改变传递到方法中的变量的值.但是,二者本质本质的区别就是,ref是传入值,out是传出值.在含有out关键字的方法中,变量必须由方法参数中不含out(可以是ref)的变量赋值或者由全局(即方法可以使用的该方法外部变量)变量赋值,out的宗旨是保证每一个传出变量都必须被赋值.