Skip to main content
 首页 » 编程设计

c#之将带有 To 和 Is 的 Select Case 转换为 C# 问题

2024年11月24日52落叶

我正在将 vb.net 转换为 c# 2010 作为我的工作,并且我拥有的自动工具都不能完全成功。在特殊的例子中,这种情况:

'searchString is a string paramter from a long method 
Select Case searchString 
   Case "paid" 
      'Do something long here 
   Case "oaaaaa" To "ozzzzzz", "maaaaaa" To "mzzzzzz" 
      'Do other long code 
   Case Else 
      'other long code 
End Select 

在此之前我主要是 java 开发人员,所以不太擅长使用 c#,也不擅长使用 vb.net。我不明白“oaaaa to ....”部分,并且这部分没有转换。你能给我指出正确的位置来找到它的 C# 版本吗?

请您参考如下方法:

C# 中没有直接的等效项,但您可以使用以下代码轻松实现相同的语义(使用更具可读性的代码!):

if(searchString == "paid") { 
    // do something here 
} 
else if( 
    searchString.IsInRange("oaaaaa", "ozzzzzz") || 
    searchString.IsInRange("maaaaa", "mzzzzzz") 
) { 
    // do other long code 
} 
else { 
    // other long code 
} 
 
public static class StringExtensions { 
    public static bool IsInRange(this string s, string lower, string upper) { 
    if(String.Compare(lower, upper) > 0) { 
        throw new InvalidOperationException(); 
    } 
    return String.Compare(s, lower) >= 0 && String.Compare(s, upper) <= 0 
}