.Net中引用类型按值参数引用的问题

 

.net 中方法参数的参数特性为值参数,实际传入的为引用类型(特殊引用类型String除外,但是字符串数组包括在内,因为数组是引用类型)时,方法体可以改变引用对象的数据成员,但是不能改变引用对象本身。

如果参数特性为引用参数,不管传入的是值类型还是引用类型,方法体将会改变引用对象的数据成员,也可以改变引用对象本身。

 

 

 请看以下代码:

 

    class Program
    {
        
static void Main(string[] args)
        {
            
int[] I1 = new int[1] { 1 };
            ChangI1(
ref I1);
            
//I1[0]=199;

            
int[] I2 = new int[1] { 1 };
            ChangI2(I2);
            
//I2[0]=199;

            
int[] I3 = new int[1] { 1 };
            ChangI3(I3);
            
//I3[0]=1000;         
        }
 

        
static void ChangI1(ref int[] i)
        {
            i[
0= 1000;
            i 
= new int[1] { 199 };
         }

        
static void ChangI2(int[] i)
        {
           i 
= new int[1] { 199 };
        }


        
static void ChangI3(int[] i)
        {
            i[
0= 1000;
            i 
= new int[1] { 199 };
        }
    }

 

 

posted @ 2010-03-11 15:56  liaohuqiu  阅读(279)  评论(0编辑  收藏  举报