2017-01-22 6 views
2

私はC#1に、いくつかのVBコードを変換しようとしていたときに、いくつかの奇妙なVBのコードに出くわした:CInt関数とGetHashCodeメソッド

totalLinks = table1.Rows(i).Item("qty").GetHashCode) * CInt(table2.Rows(i).Item("numOfLinks").GetHashCode + 1) 

(ビジネスロジックはリンク=数量* numOfLinksの合計を取得する必要があります)。

table1はDatatableであり、量は& numOfLinksは2つの列です。

質問1:上記のようなハッシュコードに 'CInt'を適用してIntegerを取得できますか?

質問2:ハッシュコードに1を加え、上記のように整数に変換するとはどういう意味ですか? (最初に整数に変換してからプラス1に変換するか、実際にはコードを誤解していましたか?)

正確に意味を理解する前に、C#に変換する方法がわかりません。ありがとう!

答えて

4

誰かがこのコードで何をしているのか分かりませんでしたが、うまくいきました。

GetHashCodeは実際にはハッシュするものがないため、Integer変数の基になる値を返します。

したがって、あなたは、単にGetHashCodeメソッドのコードを無視して、今理にかなって答え、のため

totalLinks = CInt(table1.Rows(i).Item("qty")) * (CInt(table2.Rows(i).Item("numOfLinks")) + 1) 
+0

おかげように、コードを変換する(必要がある)ことができます! – DennisL

+0

GetHashCodeがオブジェクトのハッシュコードを変換するというMSDNがありますが、なぜハッシュするものがないのかアドバイスできますか?列はオブジェクトではありませんか? – DennisL

+0

データベースの列型はほぼ確実に整数です(列の型をチェックすることができます)。値がDBから取得されると、実際にはオブジェクトではないSystem.Int32として格納されます。コードは常に働いた。実際のオブジェクト(文字列など)の場合は、非常に奇妙で不正確な乗算値があります。 –

関連する問題