您的位置:首页 > 编程语言 > C#

体验C#——聊聊方法的那些参数

2014-12-16 11:17 204 查看

一、代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ShowParams
{
    class Program
    {
        //看看C#中方法的参数的区别

        //1、值参数  会把内存中的某变量的值copy一份,然后再开辟新的内存空间进行保存
        class ValueParams
        {
            public void Add(int i)
            {
                i++;
            }
            public void Test()
            {
                int i = 0;
                Add(i);
                Console.WriteLine(i);
            }
        }
        //2、引用参数 引用类型参数不会开辟新的内存空间,原地址不变,使用地址内的值,进行运算时,值会改变
        class QuoteParams
        {
            //使用引用类型关键字 ref
            public void Add(ref int i)
            {
                i++;
            }
            public void Test()
            {
                int i = 0;
                Add(ref i);
                Console.WriteLine(i);
            }
        }
        //3、输出参数,关键字:out  可用于“返回多个值”
        class OutParams
        {
            //使用输出参数关键字out
            public void Add(out int i,out int j)
            {
                //使用输出参数必须对参数进行初始化
                i = 0;
                j = 0;

                i++;
                j++;
            }
            public void Test()
            {
                //输出参数在传入方法前可以不进行初始化,其它参数必须进行初始化
                int i;
                int j;
                Add(out i,out j);
                Console.WriteLine(i);
                Console.WriteLine(j);
            }

        }
        //数组参数 关键字:params 可在声明方法时参数个数不确定,且参数类型相同时使用 ,但在声明的方法里必须位于函数列表的最后 
        class ArraryParams
        {
            public void Add(params int[] arrI)
            {
                for (int i=0; i < arrI.Length; i++)
                {
                    arrI[i]++;
 
                }
            }
            public void Test()
            {
                int[] arrI={1,2,3,4,5};
                Add(arrI);
                for (int i = 0; i < arrI.Length; i++)
                {
                    Console.WriteLine(arrI[i]);
                }
                
            }
 
        }
        
        static void Main(string[] args)
        {
            //值参数
            ValueParams vP = new ValueParams();
            vP.Test();//结果输出为0

            //引用参数
            QuoteParams qP = new QuoteParams();
            qP.Test();//输出结果为1,i值发生了改变

            //输出参数
            OutParams oP = new OutParams();
            oP.Test();//输出结果为1,1    i,j的值都发生了改变,可以起到函数返回多个值的作用

            //数组参数
            ArraryParams aP = new ArraryParams();
            aP.Test();
            Console.ReadKey();
        }
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: