C#中值传递问题

来源:互联网 发布:化妆软件哪个好 编辑:程序博客网 时间:2024/05/29 20:03

1.传递后创建新区域,对原值不做任何改变

using System;namespace CsTest{    class Program    {         public void Swap(int num1,int num2)        {            int temp;            temp = num1;            num1 =num2;            num2 = temp;        }        static void Main(string[] args)        {            int num1;            int num2;            Program Swap= new Program();            Console.WriteLine("输入NUM1:");                num1 = Convert.ToInt32(Console.ReadLine());            Console.WriteLine("输入NUM2:");                num2 = Convert.ToInt32(Console.ReadLine());            Swap.Swap(num1,num2);            Console.WriteLine("NUM1="+num1+"\nNUM2="+num2);        }    }}

2.使用ref,不开辟新内存,改变原值

using System;namespace CsTest{    class Program    {         public void Swap(ref int num1,ref int num2)        {            int temp;            temp = num1;            num1 =num2;            num2 = temp;        }        static void Main(string[] args)        {            int num1;            int num2;            Program Swap= new Program();            Console.WriteLine("输入NUM1:");                num1 = Convert.ToInt32(Console.ReadLine());            Console.WriteLine("输入NUM2:");                num2 = Convert.ToInt32(Console.ReadLine());            Swap.Swap(ref num1,ref num2);            Console.WriteLine("NUM1="+num1+"\nNUM2="+num2);        }    }}

3.输出参数(可返回多个参数值)

using System;namespace CsTest{    class Program    {         public void getValue(out int num1,out int num2)        {            Console.WriteLine("输入NUM1:");                num1 = Convert.ToInt32(Console.ReadLine());            Console.WriteLine("输入NUM2:");                num2 = Convert.ToInt32(Console.ReadLine());        }        static void Main(string[] args)        {            int num1;            int num2;            Program Swap= new Program();            Swap.getValue(out  num1,out num2);            Console.WriteLine("NUM1="+num1+"\nNUM2="+num2);        }    }}