由於您的每個示例都需要不同數量的參數,因此您可以簡單地將其用作重載方法的基礎。要重載一個方法,你需要一個不同的簽名,這意味着方法的參數必須是不同的(參數必須是不同的類型和/或需要有不同的參數)。
所以,你可能只是做:現在
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
請註明,幫助你答案,如果做到了。 –