在我的项目中,我有一个名为nwCounter
的xml元素,它包含许多名为Wire
的元素,每个元素都有一个唯一的属性UId
,它是一个整数。并非所有数字都被使用过。
当我使用linq-to-xml时,我可以通过两种方式搜索最高的UId数:
Dim test1 As Integer = nwCounter.Descendants(networkNameSpace + "Wire").Max(Function(x) Convert.ToInt32(x.Attribute("UId").Value))
Dim test2 As Integer = nwCounter.Descendants(networkNameSpace + "Wire").Max(Function(x) x.Attribute("UId").Value)
test
的结果为124
,test2
的结果为99
。第一个是正确的。
所以我的问题是:我应该总是使用显式转换吗?或者什么时候可以使用隐式转换?
答案 0 :(得分:1)
好的,这个问题并没有带来很多牵引力,但几周后,我突然意识到问题是什么:
Max
函数始终搜索最高值,但不会获取有关类型的信息。默认情况下,它似乎假设类型是一个字符串。
如果按字母顺序排列所有属性,99
会高于124
。我之前没有看到这个的原因是因为我只使用了10到99之间的值,所以我没有遇到这个问题。