Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将所选案例转换为和Is为c#问题_C#_Vb.net - Fatal编程技术网

将所选案例转换为和Is为c#问题

将所选案例转换为和Is为c#问题,c#,vb.net,C#,Vb.net,我的工作是将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

我的工作是将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到…”部分,此部分不转换。你能给我指个合适的地方找到这个c版本吗?

c似乎没有案例的概念。。。到看见C#示例说“不支持这种语言”。

没有直接的C#等价于
大小写“xxx”到“yyy”
语法。我认为最接近的翻译可能是
if
/
else if
/
else
堆栈:

if (seachString == "paid")
{
    // do something long here
}
else if (((searchString.CompareTo("oaaaaaa") >= 0) && (searchString.CompareTo("ozzzzzz") <= 0))
         || ((searchString.CompareTo("maaaaaa") >= 0) && (searchString.CompareTo("mzzzzzz") <= 0)))
{
    // do other long code
}
else
{
    // other long code
}
if(seachString==“已付”)
{
//在这里做些长时间的事情
}

否则,如果((searchString.CompareTo(“oaaaaaa”)>=0)和&(searchString.CompareTo(“Ozzzzz”)=0)和&(searchString.CompareTo(“mzzzzzz”)在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
}
if(searchString==“paid”){
//在这里做点什么
}
否则如果(
searchString.IsInRange(“oaaaa”、“ozzzzz”)||
searchString.IsInRange(“maaaa”,“mzzzzzz”)
) {
//执行其他长代码吗
}
否则{
//其他长代码
}
公共静态类扩展{
公共静态布尔值IsInRange(此字符串为s,字符串为下,字符串为上){
如果(字符串比较(下、上)>0){
抛出新的InvalidOperationException();
}

return String.Compare(s,lower)>=0&&String.Compare(s,upper)按位有答案,但下面是翻译后的代码(与javascript类似):


我不知道格式化是否刚刚关闭,但我觉得这个问题不可理解。很抱歉,我没有看到代码被格式化为非代码。我现在格式化了代码,现在可以回答吗?C#肯定支持switch语句和case.switch{case是VB.NET的SELECT case的C#等价物。我没有说C#不支持switch语句。只是它不直接支持VB的“case…To”概念。+1因为你写的是正确的,C#没有
case…To
的概念,所以你不应该得到-1。
switch (searchString){
   case: "paid"
      'Do something long here
      break;
   case: "oaaaaa" To "ozzzzzz", "maaaaaa" To "mzzzzzz"
      'Do other long code
      break;
   default:
      'other long code
      break;
}