由于您的每个示例都需要不同数量的参数,因此您可以简单地将其用作重载方法的基础。要重载一个方法,你需要一个不同的签名,这意味着方法的参数必须是不同的(参数必须是不同的类型和/或需要有不同的参数)。
所以,你可能只是做:现在
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();
}
我的问题得到回答,现在了解的感谢 – MaxxJohnson
请注明,帮助你答案,如果做到了。 –