在VB.net的一个简单程序中,当我将一个整数与一个字符串值进行比较时,我得到一个输出。但是,它应该给我一个错误。请让我知道,因为这是一个好奇的。
以下程序给出了输出,让我知道原因,因为它不应该:
Dim str as string
str = text1.Text.Length
if(str<5)
MsgBox("Below threshold")
end if
答案 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是字符串值所以它必须生成错误。