Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 为什么可以在不转换的情况下比较整数和字符串?_String_Vb.net_Integer - Fatal编程技术网

String 为什么可以在不转换的情况下比较整数和字符串?

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))

我在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))
是否可以在不将两者转换为整数的情况下进行比较

当我运行这段代码时,它不会导致任何错误。我只是想知道为什么这是可能的?

不,这是不可能的

您可以关闭
选项Strict
,代码将编译、执行,甚至可能生成正确的结果。。。但它仍然将字符串转换为整数进行比较。您不必自己编写
CInt()
操作


此外,这不是一个好的做法。这一次,您可能会纠正错误,但最终会导致类型错误,将在运行时显示出您本来可以避免的错误。

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