2012-05-12 21 views
0

操作している型の値を返す関数を実装したいと思います。どうすればいいですか?一般的な戻り値を持つ汎用メソッドの形式

例1:

static T Swap<T>(ref T lhs, ref T rhs) 
{ 
    T temp; 
    temp = lhs; 
    lhs = rhs; 
    rhs = temp; 

    return <T> temp; 
} 

例2:

public override T GetRandom() 
{ 
    return (T)_random.Next(_min, _max); 
} 
+0

「時間の価値」とはどういう意味ですか? –

+0

返す理由がなくても、キャスト作業なしでtempを返すだけです。tempはすでに 'T'と宣言されています。 Btwあなたのキャストは間違っているsintatycally(T)が正しいが、役に立たないです。 –

+0

私は働いているタイプの価値を意味しました。私はそこに私が求めていることをよりよく説明する別の例があります。 – user272671

答えて

7

戻り型及び可変型の両方が既にTであるので、これは単にある:

return temp; 

代わりに、キャストすることもできます(ただし、ここでは必要ありません):

return (T) temp; 

実際には、IMOの「スワップ」にはvoidリターンが必要です。

+0

私は上記の必要性の2番目の例を追加しました。その場合、正しい構文ではないようです。私のTが数字であると仮定して、このような状況にどう対処するのがベストでしょうか。 – user272671

+0

エラーは、タイプintをT – user272671

+0

@ user272671に変換できないと言っています。あなたの「ランダムな」例は動作しません。これまでこれは「一般的な」スタイルのキャストではありません。あなたがそこでやろうとしているのは**変換**です。これを行う唯一の方法はおそらく 'return(T)Convert.ChangeType(theNextValue、typeof(T));'はかなり非効率的ですが、いくつかの型(float、decimalなど)で動作します。しかし、***ではありませんが、 "一般的な"ものです。 –

0

これは、一般的な作るためにも意味がありません:

public override T GetRandom() 
{ 
    return (T)_random.Next(_min, _max); 
} 

ランダム "T" が何を意味するのか? Tが "Person"型であり、ランダムPersonを返すことによって意味されるものとします。ジェネリックなGetRandomメソッドを持っているのでは、まったく論理がないようです。

整数が必要な場合は、戻り値の型としてintを指定します。

public override int GetRandom() 
{ 
    return _random.Next(_min, _max); 
} 
関連する問題