C#开关箱使用循环外变量

C#开关箱使用循环外变量,c#,variables,switch-statement,C#,Variables,Switch Statement,所以我的问题是,我有一个循环,循环中有一个switch语句。我在循环中声明变量,但在switch语句中声明。如何将其导入switch语句 例如: for (int i = 1; i < 3; i++) { var detectionid = detectionResult.Sequence.Items[i]; ulong trackId = detectionid.TrackId; switch (i) { case 1:

所以我的问题是,我有一个循环,循环中有一个switch语句。我在循环中声明变量,但在switch语句中声明。如何将其导入switch语句

例如:

for (int i = 1; i < 3; i++)
{
    var detectionid = detectionResult.Sequence.Items[i];
    ulong trackId = detectionid.TrackId;

    switch (i)
    {
        case 1:
            Console.WriteLine(trackId);
            break;
        case 2:
            Console.WriteLine(trackId);
            break;
        default:
            Console.WriteLine("Default case");
            break;
    }
}

这里的问题是trackId的声明。您应该使用ulong或double,而不是同时使用两者

            for (int i = 1; i < 3; i++)
            {
                var detectionid = detectionResult.Sequence.Items[i];
                ulong trackId = detectionid.TrackId;
                // or
                //double trackId = detectionid.TrackId;
                // or
                //var trackId = detectionid.TrackId;
                switch (i)
                {
                    case 1:
                        Console.WriteLine(trackId);
                        break;
                    case 2:
                        Console.WriteLine(trackId);
                        break;
                    default:
                        Console.WriteLine("Default case");
                        break;
                }
            }
for(int i=1;i<3;i++)
{
var detectionid=detectionResult.Sequence.Items[i];
ulong trackId=检测ID.trackId;
//或
//double trackId=检测ID.trackId;
//或
//var trackId=检测ID.trackId;
开关(一)
{
案例1:
控制台写入线(trackId);
打破
案例2:
控制台写入线(trackId);
打破
违约:
Console.WriteLine(“默认情况”);
打破
}
}

没有
双ulong
类型

  • double
    是一个
  • ulong
    是一个
使用正确的类型或使用
var
让编译器推断类型

var trackId = detectionid.TrackId;

使用
var
而不是
double-ulong
。如果我的代码粘贴错误,我将其更改!现在您已经修复了类型,代码似乎没有任何问题。如果你只做
ulong trackId=5,你能重现这个问题吗?还可以包括您得到的确切错误。仍然不起作用,它说“不能在声明前使用局部变量‘trackId’”。似乎您省略了一些重现问题所需的代码。如果从行
ulong trackId=detectionid.trackId向后搜索您是否找到另一个出现的
trackId
var trackId = detectionid.TrackId;