2010-11-30 2 views
2

私は自分の仕事としてvb.netからc#2010への変換を行っていますが、私が持っている自動ツールのどれも完全に成功することはできません。特別な例では、このケースは:ToとIsを使用してSelectケースをC#に変換する

私はこの前にほとんどのJava開発者ですので、C#ではうまくいかず、vb.netではそれほど大したことはありません。私は "oaaaa to ...."の部分を理解していないし、この部分は変換していない。あなたはこれのC#のバージョンを見つけるために私を正しい場所に向けることができますか?

+1

はのためならば、私は知りませんマッティングはちょうどオフですが、私は理解できない疑問を感じます。 –

+0

申し訳ありませんコードがコードではないことを確認できませんでした。私はフォーマットされたコードを今すぐ答えることができますか? –

答えて

3

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

C#は、ケース...という概念を持っていないようです。 http://msdn.microsoft.com/en-us/library/cy37t14y(VS.80).aspxを参照してください。 C#の例では「この言語はサポートされていません」と表示されています。

+2

C#はswitch文とcaseを確実にサポートしています。 http://msdn.microsoft.com/en-us/library/06tc147t(v=VS.80).aspx – bitxwise

+1

switch {caseはVB.NETのSELECT CASEと同等のものです – jules

+1

C#は、スイッチのステートメントをサポートします。それは、VBの "Case ... To"の概念を直接サポートしていないということだけです。 –

2

Case "xxx" To "yyy"の構文に相当する直接的なC#はありません。私は、最も近い翻訳はおそらくif/else if/elseスタックになりますと仮定します。そこC#で直接等価ではありませんが、あなたは簡単に(より読みやすいコードで!)と同じセマンティクスを達成することができます使用して、次の

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 
} 
0

ビット単位は答えを持っていますが、ここで変換されたコード(それだけで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; 
} 
関連する問題