我在工作中继承了一段代码,我刚刚发现了一个相当微不足道但又奇怪的小怪癖。所以也许有人可以节省我设置干净的.NET 2.0环境来测试它。
有一个SQL2K5表,其中包含一个名为IsEnabled BIT NOT NULL
从该表中选择一个sproc
有一段C#代码,使用SQL Reader调用SPROC,遍历结果行,并将一些信息写入日志文件以及执行其他操作。
using (SqlDataReader reader = DAL.SqlHelper.ExecuteReader(connStr, "usp_MySproc"))
{
while (reader.Read())
{
//code to do stuff...
string s = reader["IsEnabled "].ToString(); //exactly like this...
//code to concatenate `s` with other values
//log it all to file
}
}
奇怪的是,在一些较旧的日志文件中,该值被写为1
或0
,而在较新的日志文件中,它被写为true
或{ {1}}
所以发生了下列事情之一。这是由:
引起的我在最后一个小时左右搜索谷歌,寻找.net 2.0和...之间的变化。 .net 3.5但是没有向我跳出来。
任何人都可以对此有所了解吗?
答案 0 :(得分:0)
您可以重建.NET 2.0的代码并运行测试以查看您现在拥有的代码库是否输出1/0或true / false。这应该为您提供答案。此外,在这种情况下,它不是真正的boolean.ToString()。它是数据读取器,使用默认的集合和转换。可能是datareader改变了在调用字符串时输出位字段的方式。