String 为什么可以在不转换的情况下比较整数和字符串?
我在vb中比较整数和字符串。请检查以下代码:String 为什么可以在不转换的情况下比较整数和字符串?,string,vb.net,integer,String,Vb.net,Integer,我在vb中比较整数和字符串。请检查以下代码: Dim strPrice as String = "9" If CInt(Int(txtPrice.Text)) < strPrice Then Return False End If Dim strPrice as String=“9” 如果CInt(Int(txtPrice.Text))
Dim strPrice as String = "9"
If CInt(Int(txtPrice.Text)) < strPrice Then
Return False
End If
Dim strPrice as String=“9”
如果CInt(Int(txtPrice.Text))
是否可以在不将两者转换为整数的情况下进行比较当我运行这段代码时,它不会导致任何错误。我只是想知道为什么这是可能的?不,这是不可能的 您可以关闭
选项Strict
,代码将编译、执行,甚至可能生成正确的结果。。。但它仍然将字符串转换为整数进行比较。您不必自己编写CInt()
操作
此外,这不是一个好的做法。这一次,您可能会纠正错误,但最终会导致类型错误,将在运行时显示出您本来可以避免的错误。比较两个不同类型的对象实际上是不可能的。即使您有
选项Strict Off
并编写了看起来是这样做的代码,在运行时仍会在后台执行转换。问题是,在这种情况下,它可能不是您想要的,这就是为什么您应该始终明确。简而言之,不,这是不可能的。在您的情况下,该代码存在问题。首先,为什么Int
和CInt
?其次,为什么要将一个字符串
转换为整数
,而不是另一个?第三,如果用户输入的文本不代表数字,或者根本没有文本,该怎么办?要清楚,您可以从两个字符串开始,这样您就可以直接比较它们,因为它们是相同的类型。问题是,“10”被认为小于“2”,因为`字符串是按字母顺序比较的,而不是按数字比较的。如果要进行数字比较,则必须比较数字。是的,通过将整数转换为字符串;)当CInt
可以将字符串
转换为整数时,首先购买为什么调用Int
?Int
的目的是返回数字的整数部分。这件事有什么意义?即使这是您的目标,我们也不再使用VB6,因此数学。截断或数学。地板将是合适的选择。我只是想证明此代码不正确,但我不知道如何运行此代码以发生错误。@Yuki,首先,您在实际问题中没有这样说,所以也许你应该考虑将来提供所有相关信息。其次,我已经告诉过您如何生成异常:“如果用户输入的文本不代表数字,或者根本没有文本,该怎么办”。@jmcilhinney抱歉我的错误解释,感谢您的评论。所以在这种情况下,如果我不让任何文本或字符,除了数字,那么它就不会发生错误,对吗?当你可以自己测试它时,为什么你会问自己是否正确?我们在这里帮助你解决你无法解决的问题,而不是你无法解决的问题。如果你有代码,你就可以自己执行,看看会发生什么,所以你不需要问我们。@jmchilinney我很抱歉,谢谢你的回答。我不会再问那种问题了。我非常抱歉。