如果C#中的语句有更简单的方法吗?
我有以下内容:
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
)以便更有效地查找 – 但是首先测试它,作为开销可以吃掉收益。
对于这种情况,我使用扩展方法
public static bool In(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));
var keyString = model.PartitionKey.Substring(2, 2); if (keyString == "05" || keyString == "06") { // ... }
我很惊讶没人提供开关作为可能的选择:)
switch (model.PartitionKey.SubString(2,2)) { case "05": case "06": // do stuff break; // other cases default: // like an else }
您可以在MSDN上阅读更多相关信息
您可以将子字符串保存在变量中:
var substring = model.PartitionKey.Substring(2, 2); if (substring == "05" || substring == "06")
或者你可以使用正则表达式:
if (Regex.IsMatch("^..0[56]", model.PartitionKey))
这可能取决于您在阅读代码时如何轻松理解正则表达式。
为了提高可读性,您可以将Substring
提取到变量中,然后测试:
var partitionKeyBits = model.PartitionKey.Substring(2, 2); if (partitionKeyBits == "05" || partitionKeyBits == "06") { }
但否则就是这样。
if (new []{"05", "06"}.Contains(model.PartitionKey.Substring(2, 2))
语法可能很遥远,欢迎更正:)
编辑: new []
上述就是C#学习教程:如果C#中的语句有更简单的方法吗?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/990355.html