我有一个click事件处理程序,它必须检查两个文本框是否为null,如果这两个文本框都没有给两个变量赋值并传递给另一个方法。
一个变量是String,另一个是整数。如果String为null但整数不是,那么它将正常工作(它不应该这样!)。但是,如果整数为null并且字符串不是,那么它将给出一个预期的错误,因为它不应该达到那个点。
以下是代码:
private void btnInsert_Click(object sender, EventArgs e)
{
String ActorName;
int Position;
if ((txtPosition.Text != null))
{
if ((txtActorName.Text != null))
{
ActorName = txtActorName.Text;
Position = int.Parse(txtPosition.Text);
InsertIntoArrayList(ActorName, Position);
PopulateActors();
}
else
{
MessageBox.Show("Please enter an Actor Name");
return;
}
}
else
{
MessageBox.Show("Please enter a position");
return;
}
}
如您所见,如果txtPosition不为null,则它会测试txtActorName。如果其中一个为null,则抛出相关消息。假设两者都不为null,则将值分配给变量并将这些值传递给InsertIntoArrayLIst方法,然后调用PopulateActors方法。
如果我输入一个演员姓名和一个职位,一切正常。只有当我没有进入某个位置以至于错过了输入的事实,然后才会在Position = int.Parse(txtPosition.Text);
行上滑,因为txtPosition为空。
非常感谢任何帮助!
答案 0 :(得分:5)
尝试使用例如!string.IsNullOrEmpty(txtPosition.Text)
代替txtPosition.Text != null
。
或者,只需使用txtPosition.Text != ""
即可。毕竟,Text属性实际上永远不应为null。
当然,您应该对两个值txtPosition和txtActor应用相同的修复。
答案 1 :(得分:1)
null
和空字符串。它们不是一回事。Text
属性都只能为null
。在大多数情况下,您根本不需要检查该属性;只是比较一个空字符串就足够了String.IsNullOrEmpty()
和String.IsNullOrWhitespace()
方法是您的朋友。If
块。只需使用保护条款检查一个,然后检查另一个,以获得更清晰的代码:
private void btnInsert_Click(object sender, EventArgs e)
{
if (string.IsNullOrWhitespace(txtPosition.Text))
{
MessageBox.Show("Please enter a position");
return;
}
if (string.IsNullOrWhitespace(txtActorName.Text))
{
MessageBox.Show("Please enter an Actor Name");
return;
}
int Position;
if (!int.TryParse(txtPosition.Text, out Position))
{
MessageBox.Show("Please enter a number in the position field");
return;
}
InsertIntoArrayList(txtActorName.Text, Position);
PopulateActors();
}
答案 2 :(得分:0)
如果您想检查空格,也可以使用if (!string.IsNullOrWhiteSpace(txtPosition.Text)
。虽然性能方面比使用标准string.IsNullOrEmtpy
if (txtPosition.Text != string.Empty)
是另一种检查方式。
答案 3 :(得分:0)
试试这个,它可能会解决您的问题
ActorName = txtActorName.Text;
Position = int.Parse(txtPosition.Text ==“”?“0”:txtPosition.Text);