有没有更有效的方法来管理IF语句?

时间:2011-11-17 02:57:43

标签: asp.net vb.net

我总共有102个与名为ArrivedFlag的字段名相关联的值。

然后我在标记页面上有一个TextBox控件,其id为txtFlag

在我的代码隐藏中,我有一个if语句:

If txtFlag <> "value1" and txtFlag <> "another value" Then
  lblMessage.Text ="You don't have the ability to view details"
end if

这很好用。

然而,鉴于有102个值,我觉得102次IF语句的效率有点低。

有谁知道更好的方法来解决这个问题?

Dim allowedFlags = New List(Of String)() 

With { _
    "value1", _
    "another value"
}
End With
If Not allowedFlags.Contains(txtFlag) Then
    lblMessage.Text = "You don't have the ability to view details"
End If

3 个答案:

答案 0 :(得分:2)

“切换”声明会更清晰,但102“案例”仍然会有点混乱。 如果你选择了策略模式,你可能会遇到一些“类爆炸”的措施。

我可能从一个switch语句开始,然后看一下提取一些常见行为并转向策略模式。

答案 1 :(得分:2)

将值添加到列表中,然后使用.Contains

// hopefully you can get the 102 strings from an xml document or db
var listOfFlags = new List<string> { "value1", "another value", .... };

if (!listOfFlags.Contains(txtFlag))
{
  lblMessage.Text = "you dont' have ..."
}

答案 2 :(得分:2)

将您允许的值放入数组中,然后只查询用户的选择是否在数组中:

if(!allowedFlags.Contains(txtFlag))
   lblMessage.Text ="You don't have the ability to view details";

更好的是,您可以使用HashSet<string>作为允许的值,因此您有O(1)查找时间。