我总共有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
答案 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)查找时间。