将所选案例转换为和Is为c#问题
我的工作是将vb.net转换成c#2010,我所有的自动工具都不能完全成功。在特殊示例中,这种情况下:将所选案例转换为和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
'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;
}