检查字符串变量值是否为C#中指定值集之一的智能方法是什么?
我正在编写一个简单的C#.NET应用程序,其中有一个if条件,我在这里检查字符串变量值是字符串还是另一个字符串或另一个字符串,等等 大概是这样的:检查字符串变量值是否为C#中指定值集之一的智能方法是什么?,c#,.net,C#,.net,我正在编写一个简单的C#.NET应用程序,其中有一个if条件,我在这里检查字符串变量值是字符串还是另一个字符串或另一个字符串,等等 大概是这样的: if(protocollo == "2019/0002391" || protocollo == "2019/0002390" || protocollo == "2019/0001990" || ........) 这个解决方案是可行的,但它不是那么优雅。有什么更聪明的方法可以实现相同的行为?我同意@jeroenmoster的观点,这实际上取决于
if(protocollo == "2019/0002391" || protocollo == "2019/0002390" || protocollo == "2019/0001990" || ........)
这个解决方案是可行的,但它不是那么优雅。有什么更聪明的方法可以实现相同的行为?我同意@jeroenmoster的观点,这实际上取决于应用程序其余部分的上下文。也就是说,使用字符串数组并检查字符串是否在其中是一个非常简单的解决方案。确实有一些解决方案可以更好地扩展,看看吧
你从来没有说过,所以我假设你检查的字符串是硬编码的,不会经常改变。为此,您可以在静态类中创建一个
string[]
或HashSet
,这样它只初始化一次,然后公开一个方法,用于对照有效字符串检查第二个字符串
void Main()
{
Console.WriteLine(Protocols.ValidProtocol(“2019/0002391”);//True
Console.WriteLine(Protocols.ValidProtocol(“2018/0000000”);//False
}
//在此处定义其他方法和类
公共静态类协议
{
公共静态bool ValidProtocol(字符串协议)
{
返回_validProtocols.Contains(协议);
}
私有静态只读哈希集_validProtocols=新哈希集
{
"2019/0002391",
"2019/0002390",
"2019/0001990"
//等等,等等。。。
};
}
如果您需要经常检查
string
s列表的更改,那么这样的解决方案可能并不理想。如果需要经常修改列表,您可能需要从外部源(如文件或数据库)中提取列表。我认为这更适合它,这取决于您对检查所做的操作。一个开关
、一个映射到某个对象的字典
、一个哈希集
、一个枚举
或从文件/数据库读取值都是可能的选择,在速度/内存/可读性/可维护性/您拥有的东西方面都有所不同。可能将其保存在列表中,然后检查一次,或者可能有一个LINQ(不确定)。创建项目列表或数组,然后使用Contains()
string[] s = new string[] { "2019/0002391", "2019/0002390", "2019/0001990", ... };
if (s.Contains(protocollo)) {
// fill in here
}