Hacktoberfest 2026:維護者為十月標記出來的 issue,仍然開放、適合新手。 瀏覽 Hacktoberfest issue

VB -> C#: Switch on Object type results in behaviour change when cases are a different type

未關閉
#951 1 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視

還沒有人認領這個 Issue。

評估

難度
4/5
預估耗時
3-5 天
新手友好度
35/100
Issue 類型
缺陷
描述清晰度
基本清楚
活躍度
停滯
技術堆疊
csharp
領域
tooling

研究方向

透過轉換器重現 VB.NET 範例,並檢查 Select Case-to-switch 轉換的進入點。比較 selector 為 Object 且 case 值為另一種型別時的行為,然後為所示輸入和預期的 C# 行為新增覆蓋。轉換後的程式碼保留 VB.NET 的比對結果,且現有轉換測試持續通過,即表示完成。

由索引模型根據 Issue 內容生成。

描述

VB -> C#
VB.Net input code
Public Class VisualBasicClass
    Sub Main()

        Dim StrObject As Object = "10"

        Select Case StrObject
            Case 10
                Console.WriteLine("Ten")
            Case 20
                Console.WriteLine("Twenty")
            Case Else
                Console.WriteLine("Else")
        End Select

        Console.ReadLine()

    End Sub
End Class

Output: Ten

Erroneous output
public partial class VisualBasicClass
{
    public void Main()
    {

        object StrObject = "10";

        switch (StrObject)
        {
            case 10:
                {
                    Console.WriteLine("Ten");
                    break;
                }
            case 20:
                {
                    Console.WriteLine("Twenty");
                    break;
                }

            default:
                {
                    Console.WriteLine("Else");
                    break;
                }
        }

        Console.ReadLine();

    }
}

Output: Else

Expected output

Looks pretty gross, but maybe something like this:

public partial class VisualBasicClass
{
    public void Main()
    {

        object StrObject = "10";

        switch (StrObject)
        {
            case var @case when Operators.ConditionalCompareObjectEqual(StrObject, 10, false):
                {
                    Console.WriteLine("Ten");
                    break;
                }
            case var @case when Operators.ConditionalCompareObjectEqual(StrObject, 20, false):
                {
                    Console.WriteLine("Twenty");
                    break;
                }

            default:
                {
                    Console.WriteLine("Else");
                    break;
                }
        }

        Console.ReadLine();

    }
}

Output: Ten

Details
  • Product in use: both
  • Version in use: VS Extension Version 9.0.4.0 / Website latest
  • Did you see it working in a previous version, which? No
  • Any other relevant information to the issue, or your interest in contributing a fix.
主要語言
C#
星號
913
分支
244
PR 合併指標
30 天內沒有已合併 PR

環境準備

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

icsharpcode/CodeConverter 的其他 Issue

查看 icsharpcode/CodeConverter 的全部 Issue

相似的 Issue

更多 C# Issue

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。