码迷,mamicode.com
首页 > 编程语言 > 详细

c#中数组名作为参数如何通过修改形参的值来改变实参的值?

时间:2014-11-19 00:18:03      阅读:242      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   sp   for   div   on   

using System;
namespace ConsoleApplication1
{
    class Program
    {
        void f(int[] a)
        { 
            a[0] = 1;//通过这种方式就可以修改实参的值,说明通过这种方式就是在原内存上来修改元素的值
        }
         static void Main(string[] args)
         {Program obj=new Program();
         int[] a =new int[4] { 6, 7, 8, 9 };
         obj.f(a);
         for (int i = 0;i<a.Length; i++)
         { Console.Write(a[i]+" "); }
         Console.ReadLine();
        }
     }
}
void f(int[] a)
        { 
           a = new int[5] { 1, 2, 3, 4, 5 }; 
        }

obj.f(a);
//这种情况不能通过修该形参的值,来达到修改实参的值;
因为数组本身是一个引用类型,引用存放在栈中,引用的值也就是在堆中分配的内存;
就拿此程序分析,一开始形参和实参都指向同一个内存块;但是当a = new int[5] { 1, 2, 3, 4, 5 }; 这条语句执行完后,相当于给形参在堆中分配了一个内存;
此时就完全不相干了!若果真想通过这种方式来改变实参的值,可以采用这样的格式!如下所示:

 void f(ref int[] a)
 {a = new int[5] { 1, 2, 3, 4, 5 };

 }
 obj.f(ref a);

 

c#中数组名作为参数如何通过修改形参的值来改变实参的值?

标签:style   blog   io   ar   color   sp   for   div   on   

原文地址:http://www.cnblogs.com/leijiangtao/p/4106902.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!