2017-12-09 17 views
-4

returnTypeの値に基づいてこのメソッドの戻り値の型を変更するにはどうすればよいですか? int、float、およびdecimalsを返すために、それぞれに対して別々のメソッドを作成する必要はありません。具体的には、returnTypeの値に基づいて、最初の行の小数点をに変更するにはどうすればよいですか?引数の値に基づいてメソッドの戻り値の型を変更するにはどうすればよいですか?

public static decimal RequestNumber(string returnType) 
    { 
     Console.WriteLine(inputRequest); 

     decimal result; 

     switch(returnType) 
     case decimal: 
      bool parsed = decimal.TryParse(Console.ReadLine(), out result); 
     case int: 
      bool parsed = int.TryParse(Console.ReadLine(), out result); 
     case single: 
      bool parsed = single.TryParse(Console.ReadLine(), out result); 
     return result; 
    } 

ご協力いただければ幸いです。

+0

より良い..あなたが必要なのIntなると、入力パラメータとして小数に渡す 'ConvertTo'メソッドを使用するか、またはタイプを変更する方法を見始めます'C#Basics'を読み返すために戻る – MethodMan

+0

重複しているように見えますが、入力パラメータでスピンを追加します:https://stackoverflow.com/questions/20705643/method-overloading-with-different-return-type – RetroCoder

+0

Genericsメソッドを使用して、Tを返し、検出された各文字列タイプに対してFunc を返します。 – RetroCoder

答えて

-2

オブジェクト型を使用し、呼び出し時に戻り値をキャストできます。

private static object duo(string req) 
{ 

    if (req == "Y") 
    { 
     string s = "Type String"; 
     return s; 
    } 
    else 
    { 
     List <string> l = new List<string> { "Type", "List" }; 

     return l; 
    } 
} 

そして、それを使用する:

List<string> res = (List<string>)duo("H"); 
+0

'string'を' List 'にキャストすることはできません – FCin

関連する問題