在VB.Net中将字符串与整数进行比较时出错

时间:2015-10-11 05:33:58

标签: vb.net

在VB.net的一个简单程序中,当我将一个整数与一个字符串值进行比较时,我得到一个输出。但是,它应该给我一个错误。请让我知道,因为这是一个好奇的。

以下程序给出了输出,让我知道原因,因为它不应该:

Dim str as string
str = text1.Text.Length
if(str<5)
MsgBox("Below threshold")
end if

4 个答案:

答案 0 :(得分:1)

根据您的代码,str是一个字符串变量,您可能希望与text1.text进行比较。

如果您使用

str = text1.text

这将是变量分配,它会将text1中的值分配给str

然后,如果你想检查该变量中的内容,你应该检查

if str="<value to check>"
    MessageBox.Show("<Message>") 'For you Information, MsgBox() is a deprecated method, Use MessageBox.Show() instead
end if

现在,您正在做的是,您要将text1中输入的文本的长度分配给str,这将计算text1中输入的字符数并指定{ {1}}值为Integer。所以上述程序是正确的,如果你想做什么,不会给出错误。

如有任何其他疑问,请随时提出。

答案 1 :(得分:1)

将str声明为Integer或在比较语句中将str转换为Integer。

        mHolder.mCheckox.setOnCheckedChangeListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
        if (((CheckBox) v).isChecked()){
              mHolder.mQuantityEditText(true)
                } else {
                   mHolder.mQuantityEditText(false)
                }
                buttonView.setChecked(isChecked);//not sure why you doing this, required if you just want to enable/disable edit text
            }
        });

Dim str as Integer  

答案 2 :(得分:1)

我认为当你进行混合类型比较时,默认情况下,vb会尝试将字符串转换为double,然后进行比较。实际上你应该自己转换字符串以使代码更容易阅读,如果确实发生了某些事情,可能更容易调试。

将来要查看这些警告,

右键单击项目名称,然后单击菜单底部的属性。

出现一个包含所有项目选项的窗口。单击“编译”。

三分之二的时间你有一个警告配置列表。希望列表的顶部是隐式转换。将此更改从“无”更改为“警告”,您将在错误列表窗口中将所有这些隐式转换视为警告。他们不会停止代码运行,但你可以看到它们并在必要时处理它们。

答案 3 :(得分:0)

根据您的查询,str是字符串变量和

Dim str as string
str = text1.Text.Length

会产生问题,因为5是整数值而str是字符串值所以它必须生成错误。