0

asp.netアプリケーションを.NET2.0から.NET3.5に変換しています

私は次のようなインラインコードをたくさん持っています:

    Dim Total = 0

     for each dr as DataRow in dt.Rows
             Total = Total + dr("SumOfAmount")
next
     Response.Write(FormatCurrency(Total,2))

total変数の明示的な型宣言がないことに注意してください。

このコードは.NET2.0で正常に機能しました

.NET 3.5では、Total変数は整数として定義されているため、パスごとに合計が最も近いドルに丸められます。

私は1つの解決策がただ変更することであることを知っています

     Dim Total = 0 

10進数としてのDimTotal=0またはDimTotal=0Dのいずれかに

ただし、この問題を探すためにシステムのすべてのページにアクセスする必要はありません。

この動作を.NET2.0の場合と同じように変更できる、サイト全体またはページ全体のオプションはありますか?

4

2 に答える 2

1

Option Inferが On に設定されているため、この動作が発生したと思われます。Off に設定すると、古い動作が維持されます。

この設定は、プロジェクトのプロパティ ページで変更できます。

于 2012-05-17T17:13:47.687 に答える
0

Option Strict と Option Explicit が両方ともオフに設定されていることを確認することで回避できるかもしれませんが、これは悪いコーディング プラクティスです。

明示的に型指定された 10 進数は、バリアント型よりも優れたパフォーマンスを発揮します。

うまくいけば、VB.Net 3.5 は暗黙のキャストを許可しなくなりました。明らかに、暗黙的な型付けは引き続き許可されますが、すべてのオプションがオフになっていることを確認してもそれができない場合は、Dim Total = 0.0 が機能する可能性があり、アプリケーション内のすべてのインスタンスを探す必要があります。

すべてのオプションをオフにしてもうまくいく場合は、Option Explicit と Option Strict をオンにしてコードを修正すると、より堅牢でパフォーマンスの高いコードが得られます。

于 2012-05-17T17:21:50.303 に答える