2017-12-14 9 views
-2

私はこのコードが何度も繰り返されていた:メソッドに渡される変数をどのようにCASTすることができますか?

if (db2.Query<int>("SELECT 1 FROM CARDCHOICE WHERE CC = ?", (int)CC.JFBP1).Count == 0) 
{ 
    var temp10 = Enumerable.Range(0, 10).Select(i => new CardChoice { Cc = (int)CC.JFBP1, Number = i }); 
    db2.InsertAll(temp10); 
} 

私はここでは、この

InsertCC(CC.JFBP1, 10); 

は方法が

private static void InsertCC(CC cc, int qty) 
{ 
    var choice = int(cc); 
    if (db2.Query<int>("SELECT 1 FROM CARDCHOICE WHERE CC = ?", choice).Count == 0) 
    { 
     var temp = Enumerable.Range(0, qty).Select(i => new CardChoice { Cc = choice, Number = i }); 
     db2.InsertAll(temp); 
    } 
} 

何であるように、私はと呼ばれる方法にこれを入れてみました私は、(int)を使ってメソッドのccをCASTできず、 "Error expression term int"を返します。

渡されたCCをどのようにキャストできるかについて、誰かに助言を与えることはできますか?私はメソッドコールでキャストを行うことができたが、私はそれらの呼び出しがたくさんあるので、それをしたくないことを知っている。

+6

'(int)c c.JFBP1'? –

+1

CC型を渡す場合は、 InsertCC(CC、10);のように渡すことができます。あなたの関数でCC.JFBP1を呼び出します。 また、InsertCC(CC.JFBP1,10)を呼び出すこともできます。最初の引数をCCではなくintに変更します。 –

+0

'db2.Query '?これは何ですか? Dapper? – spender

答えて

2

このコードはvar choice = int(cc);

使用var choice = (int)cc;

をキャストではありませんが、あなたは、あなたの呼び出しは

に動作しますメソッド内 ccパラメータを使用して、これだけ int

private static void InsertCC(int choice, int qty) 
{ 
    if (db2.Query<int>("SELECT 1 FROM CARDCHOICE WHERE CC = ?", choice).Count == 0) 
    { 
     var temp = Enumerable.Range(0, qty).Select(i => new CardChoice { Cc = choice, Number = i }); 
     db2.InsertAll(temp); 
    } 
} 

を渡しません

InsertCC(CC.JFBP1, 10); 
+1

ありがとう、それは私の間違ったミスでした。しばらくそれを見ていて、それを見つけられませんでした。 9分で回答を受け入れます。 – Alan2

+2

@ Alan2キャストをGoogleで検索する方法がわからない場合は、_alot_という情報があります。これは秒を要しません_a while_ –

関連する問題