在内部使用swith语句时c#函数出错

时间:2016-02-19 06:56:54

标签: c# switch-statement

我的C#代码出了问题,我真的不知道,为什么会出错!在我看来它很好用,但它不会t. It doesn甚至编译。这就是功能:

public bool AddColumn(string tableName, string colName, ColType colType)
    {
        switch(colType) 
        {
            ColType.MYSQL_DOUBLE:   
                                    Console.Write("DOUBLE");
            ColType.MYSQL_INT:      
                                    Console.Write("INT");
            default:                
                                    Console.Write("DEFAULT");
        }
          return true;
    }

错误说,缺少';'和'}'。因此,如果If尝试在函数的内容中发表评论,如:

public bool AddColumn(string tableName, string colName, ColType colType)
    {/*
        switch(colType) 
        {
            ColType.MYSQL_DOUBLE:   
                                    Console.Write("DOUBLE");
            ColType.MYSQL_INT:      
                                    Console.Write("INT");
            default:                
                                    Console.Write("DEFAULT");
        }*/
          return true;
    }

我可以编译程序。因此,switch语句内部存在问题,不是吗?希望有人可以帮助我摆脱这个......

FYI类型'ColType在程序中声明:

public enum ColType
    {
        MYSQL_DOUBLE = 0,
        MYSQL_INT = 1
    };

3 个答案:

答案 0 :(得分:3)

您错过了case中的switch关键字,并在每种情况下都放置了break,其值得查看MSDN上的文档

switch(colType) 
{
     case ColType.MYSQL_DOUBLE:   
              Console.Write("DOUBLE");
              break;
     case ColType.MYSQL_INT:      
              Console.Write("INT");
              break;
     default:                
              Console.Write("DEFAULT");
              break;
 }

答案 1 :(得分:2)

c#

中的正确开关案例

https://msdn.microsoft.com/en-sg/library/06tc147t.aspx

int caseSwitch = 1;
switch (caseSwitch)
{
    case 1:
        Console.WriteLine("Case 1");
        break;
    case 2:
        Console.WriteLine("Case 2");
        break;
    default:
        Console.WriteLine("Default case");
        break;
}

答案 2 :(得分:1)

您错过了case - 和break - 语句,以区分您的交换机中的案例:

switch(colType) 
{
    case ColType.MYSQL_DOUBLE:   
        Console.Write("DOUBLE");
        break;
    case ColType.MYSQL_INT:      
        Console.Write("INT");
        break;
    default:                
        Console.Write("DEFAULT");
        break;
}

还要考虑这个:

  

开始执行所选开关部分中的语句列表   用第一个语句并通过语句列表继续,   通常直到跳转语句,例如休息,转到大小写,返回,   到达或者扔,到达。在那一点上,控制权转移到了外面   switch语句或另一个case标签。 (https://msdn.microsoft.com/library/06tc147t.aspx

这意味着虽然case将指示switch-case break的开头(或任何其他中断执行的语句,如returnthrow)表示其结束