2017-10-14 73 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(); 
}