Csharp/C#教程:如果C#中的语句有更简单的方法吗?分享


如果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

(0)
上一篇 2021年12月24日
下一篇 2021年12月24日

精彩推荐