質問
どのように私は、F#からDbCommand.ExecuteScalarを使用できますか?それは私がint型に変換する必要がありOBJを返します。私はF#に非常に新しいだと私が行う必要があるキャストは明らかではない。
let (stockid:uint32) = command.ExecuteScalar()
Compile Error:
Type constraint mismatch. The type obj is not compatible with type uint32
アップキャスト使用:?。>ランタイムエラーがスローされます。
解決
あなただけ言うなら、
let o : obj = ...
printfn "%s" (o.GetType().ToString())
あなたは何を得るのですか?それは確かにint型ですか? (INT32またはUINT32または何?)
:?>演算子は正しい意気消沈オペレータですが、一致するタイプを必要としています。あなたが別の整数型から変換する必要がある場合は、実際の型にキャストした後、宛先のタイプ、例えばのための対応する関数を使用します。
let x : int = int myUnsignedInt
// first 'int' is type, second is function to convert-to-int
他のヒント
意気消沈した場合(:?>)を使用して、実行スカラからの戻り値としてunit32を取得していない、実行時にスローされます。あなたが変換することができるはず...
let stockid : uint32 = unit32 command.ExecuteStalar()
しかし、あなたはあまりにも失敗しますUINT32、に変換することはできません。<のhref = "http://msdn.microsoft.com/en-us/library/dd233220(VS何かを取得している場合。 100)の.aspx」REL = "nofollowをnoreferrer">鋳造及びこちら変換の詳細を
の代わりにUINT32のINT32にキャストしてみます。 ExecuteScalarは、INT32のオブジェクトを返す。
所属していません StackOverflow