我有以下内容:
if (model.PartitionKey.Substring(2, 2) == "05" ||
model.PartitionKey.Substring(2, 2) == "06")
我有更多类似的内容。有没有更干净的方法编写代码,不必重复两次model.PartitionKey?
我有以下内容:
if (model.PartitionKey.Substring(2, 2) == "05" ||
model.PartitionKey.Substring(2, 2) == "06")
我有更多类似的内容。有没有更干净的方法编写代码,不必重复两次model.PartitionKey?
这个怎么样:
if (new string[]{"05", "06"}.Contains(model.PartitionKey.Substring(2, 2))
// ...
那么你可以自由地将你要查找的字符串存储在一个漂亮的列表中...
var lookingFor = new string[]{"05", "06"};
var substring = model.PartitionKey.Substring(2, 2);
if (lookingFor.Contains(substring))
{
// ...
}
如果你要查找的字符串列表超过两个,这将非常有帮助... 另外,你可以将其添加到一个集合中(HashSet<string>
),以获得更高效的查找-但首先进行测试,因为开销可能会抵消收益。
new string[] { ... }
简写为 new [] { ... }
。 - Stefan Steinegger对于这种情况,我使用扩展方法。
public static bool In<T>(this T source, params T[] list)
{
if (source = null)
throw new NullReferenceException("Source is Null");
return list.Contains(source);
}
调用它作为
if (model.PartitionKey.Substring(2, 2).In("05", "06"))
if(myintegervariable.In(3, 4));
或者
if(mybytevariable.In(23, 56, 34, 43, 87, 155));
Contains
的反向操作,但在像这样的情况下,它更加易读。 - Stefan Steineggervar keyString = model.PartitionKey.Substring(2, 2);
if (keyString == "05" || keyString == "06")
{
// ...
}
temp
是什么很清楚,特别是在如此接近的情况下,条件确实更容易阅读。 - Joeytemp
不是一个好的命名方式。考虑到这个变量可能会在一个很大的方法中使用。关键是,modelPkYear
会更加安全可靠。 - Tim Schmelterswitch (model.PartitionKey.SubString(2,2)) {
case "05":
case "06":
// do stuff
break;
// other cases
default:
// like an else
}
您可以在MSDN上了解更多相关的IT技术内容。
你可以将子字符串保存在一个变量中:
```var substring = model.PartitionKey.Substring(2, 2);
if (substring == "05" || substring == "06")
或者您可以使用正则表达式:
if (Regex.IsMatch("^..0[56]", model.PartitionKey))
^..(?:05|06)
。同时请注意,在某些语言中,.
不匹配所有字符的情况。 - user166390Substring
提取到一个变量中,然后进行测试:var partitionKeyBits = model.PartitionKey.Substring(2, 2);
if (partitionKeyBits == "05" || partitionKeyBits == "06") {
}
但除此之外,就是这样了。
if (new []{"05", "06"}.Contains(model.PartitionKey.Substring(2, 2)))
语法可能有些偏差,欢迎纠正 :)
编辑:new []
new []
。 - Stefan Steineggermodel.PartitionKey.Substring
,但感觉不太符合 ".NET" 的风格(特别是需要使用 new[]
)。不确定从可读性的角度来看,这是否是一个好的选择。 - Michael Shimmins['05, '06'].include? model.PartitionKey.Substring(2,2)
,那就太棒了 ;) - Michael Shimmins