c#基础--方法(复习总结)

概念:

一般在同一个类中,方法名相同,并且方法的参数个数或对应位置上的类型不同,才能构成方法的重载。

注意:方法重载和返回值没有关系,参数的个数或对应位置上的类型相同时,构不成重载

 

问题:方法只能返回一个值,当需要返回多个值时怎么办?

题:写一个方法,计算一个int类型数组中每个元素的总和 和 最大值与最小值?

该题需要返回3个参数,分别是sum(总和),max(最大值),min(最小值)

代码实现:
using System;

namespace outref
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] arrTemp = { 12,32,11,2,54,24,86,99,12,98};
            int max;
            int min;
            int sum = TestOut(arrTemp,out max,out min);
            Console.WriteLine("和={0},最大值={1},最小值={2}",sum,max,min);
            Console.ReadLine();
        }
        public static int TestOut(int[] arrTemp,out int max, out int min)
        {
            int sum = 0;
            max = arrTemp[0];
            min = arrTemp[0];
            for (int i = 0; i < arrTemp.Length; i++)
            {
                sum = sum + arrTemp[i];
                if (max < arrTemp[i])
                {
                    max = arrTemp[i];
                }
                if (min > arrTemp[i])
                {
                    min = arrTemp[i];
                }
            }
            return sum;
        }
    }
}

执行结果:
QQ截图20111209072637

实现步骤:

1.在方法的参数类型前加 out,那么传参数的时候,也 必须在调用该方法的参数前加out,表明这个参数不是传入的,而是用来传出值的。

2.如果参数是以out形式传入的,那么在传入前可以不赋初值

3.在方法中对于由out修饰的参数,必须赋值,并且必须在使用前赋值。

 

练习:写一个MyTryParse方法,要求用户传入一个字符串,如果这个字符串能转换成int类型,则方法返回true,并且转换后的int类型数据数据通过方法的参数传出,如果字符串不能转换成int类型,则方法返回false

 

代码实现:

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

namespace MyTryParse
{
    class Program
    {
        static void Main(string[] args)
        {
            int result;
            Console.WriteLine("请输入待转换的字符:");
            string strTemp = Console.ReadLine();
            bool isParse = MyTryParse(strTemp,out result);
            int.TryParse(strTemp,out result);
            if (isParse == true)
            {
                Console.WriteLine("转换成功!转换后的值为:{0}", result);
            }
            else
            {
                Console.WriteLine("转换失败!");
            }
        }
        public static bool MyTryParse(string strTemp, out int result)
        {
            
            result = 0;
            try
            {
                result = Convert.ToInt32(strTemp);
                return true;
            }
            catch
            {
                return false;
            }
        }
    }
}

 

out就是内部为外部变量赋值,out一般用在函数需要有多个返回值的场所

 

 

ref与out的区别

out用于传出值,ref可以理解成双向的,既可以传入,又可以传出,在传参前,必须先赋初值

在传参数的过程中,如果参数有out或ref修饰的话,那么改变方法中的参数变量的值,调用者方法中变量的值也会相应改变。

posted @ 2011-12-09 08:08  zyswtwang  阅读(731)  评论(0)    收藏  举报