2011-01-05 6 views
1

私はコンソール上のユーザのために何かを照会する方法をプログラミングし、彼の答えを取得しています...何か:要するにC#の組み込み構造体をパラメータ型Tにキャストする方法は?このような

static T query<T>(String queryTxt) 
    { 
     Console.Write("{0} = ", queryTxt); 
     T result; 
     while (true) 
     { 
      try 
      { 
       result = // here should go the type casting of Console.ReadLine(); 
      } 
      catch (FormatException e) 
      { 
       Console.WriteLine("Exception: {0};\r\nSource: {1}", e.Message, e.Source); 
       continue; 
      } 
      break; 
     } 
     return result; 
    } 

queryTxt、どこの値を求めておく必要があります。この方法Tは常にintまたはdouble ...

これを行うには良い方法はありますか?

ありがとうございます!

答えて

2

いつもintまたはdoubleがdoubleで動作している場合.Parseは常に動作します。

+0

しかし、メソッドの戻り値の型はどうですか?申し訳ありませんが、私はそれを取得していませんでした... – Girardi

+0

戻り値の型としてTに問題はありません。コードを試してください。しかし、intとdouble以上をサポートする必要がある場合は、Simonが書いたものを –

1

一般化する1つの方法は、変換関数を代理人として渡すことです。より一般的なアプローチについては

T query<T>(string text, Func<string, T> converter) 
{... result = converter(Console.Readline())...} 
query("foo", s=>Int.Parse(s)); 

- 読ん「一般タイプ変換 」http://msdn.microsoft.com/en-us/library/yy580hbd.aspxと関連する記事:ような何か。

+0

と書いてあります。私はもう一方を選んだのですが。しかし、それは私が持っていた別の問題(メソッドにパラメータとして述語を渡すこと)を克服するために私が探していたものです。ありがとう! – Girardi

関連する問題