0

我正在将 asp.net 应用程序从 .NET 2.0 转换为 .NET 3.5

我有很多像这样的内联代码:

    Dim Total = 0

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

请注意,总变量没有显式类型声明。

此代码在 .NET 2.0 下运行良好

在 .NET 3.5 下,Total 变量被定义为一个整数,因此每次通过时,总数都会四舍五入到最接近的美元。

我知道一种解决方案就是改变

     Dim Total = 0 

将 Dim Total 作为小数 = 0 或 Dim Total = 0D

但是,我宁愿不必访问系统中的每个页面来查找此问题。

是否有任何站点范围或页面范围的选项,我可以将此行为更改回 .NET 2.0 下的方式?

4

2 回答 2

1

我怀疑您会出现这种行为,因为Option Infer设置为 On。将其设置为关闭将保留旧行为。

您可以在项目属性页面中更改此设置。

于 2012-05-17T17:13:47.687 回答
0

可能您可以确保 Option Strict 和 Option Explicit 都设置为关闭,但这是一个糟糕的编码实践

显式类型的小数将比变体类型执行得更好。

希望 VB.Net 3.5 已经取消了允许隐式转换。显然它们仍然允许隐式键入,但是如果确保所有选项都关闭并不能这样做,那么唯一的另一种可能性是 Dim Total = 0.0 可能会起作用,这仍然让您在应用程序中寻找每个实例。

如果关闭所有选项确实有效,那么如果您打开 Option Explicit 和 Option Strict On 并修复代码,您最终会得到更健壮、性能更好的代码。

于 2012-05-17T17:21:50.303 回答