值传递和引用传递

来源:互联网 发布:电脑必备办公软件 编辑:程序博客网 时间:2024/04/29 12:07
众所周知,在编程中的参数调用方法里,有值传递和引用传递之分。所以,我也知道,值传递就是只把参数的值传递过去,等于是又生成了一个副本,不会对原来的变量造成任何影响。一般情况下,C#中就是采用的这种方法。而引用传递则等于是传递了一个指针,所以,会影响到原来的值。
  为什么会说到这个很基础的问题呢?当然还是因为编程工作中遇到的困难引起的。昨天,写了一个函数,将DataView作为参数传递到函数中进行处理,我用dv[0]["areaname"].ToString();(dv为一个DataView实例),想得到经RowFilter后的某字段值。结果却出乎我的意料之外,其实问题是出在这句代码上,是因为我对DataView的错误理解造成的。但我总以为是在参数传递过程中出现的问题,浪费了不少时间。不过,在这一过程中,也让我对于值传递和引用传递又有了更进一步的理解。
  其实,这种设计也符合自然的思想。程序员在调用函数的时候,一般情况下都不会希望影响到原来的值,这样往往会造成思维上的混乱。所以,默认情况下采用值传递,是很自然的设计。如果有特殊的要求,则可以通过关键字ref来表明其引用的方式。
  时间关系,关于DataView的错误理解,我抽时间另文说明。