我将convertng 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#版本吗?
答案 0 :(得分:3)
在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
}
答案 1 :(得分:2)
没有Case "xxx" To "yyy"
语法的直接C#等价物。我想最近的翻译可能是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
}
答案 2 :(得分:1)
C#似乎没有Case的概念...... To。见http://msdn.microsoft.com/en-us/library/cy37t14y(VS.80).aspx。 C#示例说“不支持此语言”。
答案 3 :(得分:0)
bitwise有答案,但这里是翻译后的代码(就像javascript一样):
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;
}