質問

どのように私は、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のオブジェクトを返す。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top