2017-10-14 111 views
1

你好在c#中的一个控制台应用程序如何将方法重载与3计算工作。重载计算一个球体,圆柱体,矩形体积我知道该怎么做让他们说嘿1球体2为圆柱体3为矩形,然后你输入规格,它自己输出答案或1,或让他们来在彼此之后。但有没有办法通过方法重载来实现,而且更容易吗?只需要半径的球体,需要半径以及高度和长方形的球体需要输入一个长度,宽度,高度来计算。所以它会超载3倍......如果任何人有任何伟大的建议,而不是在10分钟的视频来了解一般的方法,将非常感谢真的谢谢!用于计算圆柱体圆柱体矩形的体积,方法超载更容易去这个

+0

我的问题得到回答,现在了解的感谢 – MaxxJohnson

+0

请注明,帮助你答案,如果做到了。 –

回答

1

由于您的每个示例都需要不同数量的参数,因此您可以简单地将其用作重载方法的基础。要重载一个方法,你需要一个不同的签名,这意味着方法的参数必须是不同的(参数必须是不同的类型和/或需要有不同的参数)。

所以,你可能只是做:现在

public static double GetVolume(double radius) 
{ 
     // Do calculation for a sphere 
     return 4.0/3 * Math.PI * Math.Pow(radius, 3); 
} 

public static double GetVolume(double radius, double height) 
{ 
     // Do calculation for a cylinder 
     return Math.PI * Math.Pow(radius, 2) * height; 
} 

public static double GetVolume(double length, double width, double height) 
{ 
     // Do calculation for a rectangle 
     return length * width * height; 
} 

,这听起来像你要根据他们多少维度进入推断形,从用户类型(无提示他们的形状类型第一)。如果是这种情况,一种方法是让它们输入逗号分隔的维度列表。然后,您可以用逗号分隔输入,并根据输入的维数调用适当的方法。

例如:

static void Main() 
{ 
    Console.WriteLine("Volume Calculator\n-----------------"); 

    string[] input; // Will hold user input 
    double dimension; // Temp varible for testing that input is a double 
    double volume;  // Will hold result from Volume calculation 

    // Get input from user 
    do 
    { 
     Console.Write("Enter a comma-separated list of 1 to 3 numeric dimensions: "); 
     input = Console.ReadLine().Split(new[] { ',' }, 
      StringSplitOptions.RemoveEmptyEntries);     
    } 
    while (input.Length < 1 || input.Length > 3 || 
      input.Any(i => !double.TryParse(i, out dimension))); 

    // Call appropriate method based on number of dimensions and output results to user 
    switch (input.Length) 
    { 
     case 1: 
      volume = GetVolume(double.Parse(input[0])); 
      Console.WriteLine($"The volume of the Sphere is: {volume}"); 
      break; 
     case 2: 
      volume = GetVolume(double.Parse(input[0]), double.Parse(input[1])); 
      Console.WriteLine($"The volume of the Cylinder is: {volume}"); 
      break; 
     case 3: 
      volume = GetVolume(double.Parse(input[0]), double.Parse(input[1]), 
       double.Parse(input[2])); 
      Console.WriteLine($"The volume of the Rectangle is: {volume}"); 
      break; 
    } 

    Console.Write("\nDone!\nPress any key to exit..."); 
    Console.ReadKey(); 
}