A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

编写一个Compare类,该类重载方法BigNum求得输入的几个整型参数的最大数返回给调用方。重载方法的一个版本是求两个整数的最大数,另一个版本是求三个整数的最大数。

5 个回复

倒序浏览
public int BigNum(int num1,int num2)
{
if(num1>num2){
return num1;
}
else
{
return num2;
}
}
public int  BigNum(int num1,int num2,int num3)
{
   if(num1>num2)
  {
  if(num1>num3)
{
return num1
}
else{
return num3
}
  }
else{
if(num2>num3)
{
return num2
}
else
{
return num3
}
}
}

方法的重载就是同一个类中具有相同的方法名,并且方法的返回值类型相同,并且方法的参数类型相同,方法的参数个数也相同,则构成了方法的重载


评分

参与人数 1技术分 +1 收起 理由
苏波 + 1 代码还可以写的精辟点

查看全部评分

回复 使用道具 举报
其实重载不大好,如果我让你写返回2个int变量最大值的方法BigNum
再让你写返回3个int变量最大值的方法BigNum。再让你写返回三个int变量最大值的方法BigNum。
再让你写返回4个int变量最大值的方法BigNum.。。。再让你写返回1000个int变量最大值的方法BigNum

你既不累坏了,呵呵。。。。看看下面方法用可变int数组做参数的方法做的
class Program
    {
        static void Main(string[] args)
        {
           int max = BigNum(new int[]{1,6,9,21,45,98,67,84});
            Console.WriteLine(max);
           
            Console.ReadKey();
        }
        static int BigNum(params int[] array)
        {
            int max = array[0];
            for (int i = 0; i < array.Length; i++)
            {
                if (array[i] > max)
                {
                    max = array[i];
                }
            }
                return max;
        }
    }
回复 使用道具 举报
方法重载是让类以统一的方式处理不同类型数据的一种手段。在C#中,语法规定同一个类中两个或两个以上的方法可以用同一个名字,如果出现这种情况,那么该方法就被称为重载方法.当一个重载方法被调用时,C#回根据调用该方法的参数自动调用具体的方法来执行.

什么是方法重载?在面对对象这样的高级语言中都允许我们在一个类中定义多个方法名相同、方法间参数个数和参数顺序不同的方法,对于参数个数不同或者参数列表不同的情况我们称之为参数列表不同。需要注意的是这里没有提到方法的返回值。也就是决定方法是否构成重载有以下几个条件:

◆ 在同一个类中;

◆ 方法名相同;

◆ 参数列表不同。

在方法的重载中,显式优先匹配调用方法是给定的参数个数相同的方法
       ref和out不能作为重载的依据,需要使用时只能选其一,不能两个同时使用
       如果参数被ref或out修饰,则参数必须是变量

方法的返回值不构成重载的条件。
       方法的参数个数不同可以构成重载,当方法的参数个数相同是参数的类型不同也可以构成重载。

使用数组类型作为方法的参数:关键字params只能出现一次而且是出现在参数中的最后一个
       例:
        public void Paint(int num, params string[] str)
        {
        }

例1:

class Heavy
    {
        static void Main(string[] args)
        {
            Heavy hay = new Heavy();
            hay.Print();
            hay.Print(123);
            hay.Print(12345);
            hay.Print(123, "steven");
            hay.Print(123, "a", "b", "c");
            Console.Read();
        }
        public void Print()
        {
            Console.WriteLine("方法执行 无参 ");
        }
        public void Print(int num)
        {
            Console.WriteLine("方法执行 整型参数");
            Console.WriteLine(num);
        }
        public void Print(ref int num)
        {
            Console.WriteLine("方法执行 ref 整型参数");
            num = num * 1000;
            Console.WriteLine(num);
        }
        //ref和out不能作为重载的依据,需要使用时只能选其一,不能两个同时使用
        //public void Print(out int A)
        //{
        //    Console.WriteLine("方法执行 out 整型参数");
        //    num = num * 1000;
        //    Console.WriteLine(num);
        //}
        public void Print(int num, string str)
        {
            Console.WriteLine("方法执行 整型参数+字符串");
            Console.WriteLine(num);
        }
        //使用数组类型作为方法的参数:关键字params只能出现一次而且是出现在参数中的最后一个
        public void Print(int num, params string[] str)
        {
            Console.WriteLine("方法执行  整型参数 + 数组类型");
            Console.WriteLine(num);
            for (int i = 0; i < str.Length; i++)
            {
                Console.WriteLine(str[i]);
            }
        }
    }

回复 使用道具 举报
思路:
1.求两个数(a,b)中的最大值:return a>b?a:b;
2.求三个数(a,b,c)中的最大值:
    int temp;
    temp = a>b? a:b;
    temp = temp>c? temp:c;
3.三个数以上:通过前两个其实可以看出来,最大值就是把第一个数保存在一个变量中,然后用每一个数来比较,如果比这个变量大,就替换变量原来的数。

Ps:
C#中可以用params来写一个通用的方法:
  1. public static int Max(params int[] arr)
  2. {
  3.     int result=arr[0];
  4.     foreach (int x in arr)
  5.     {
  6.         if (x>result) result=x;
  7.     }
  8.     return result;
  9. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马