切换,如果在c#中

本文关键字:如果 切换 | 更新日期: 2023-09-27 18:13:38

为什么下面的工作(编译):

public void SaveCurrentTab(string currentTabIndex)
        {
            if (currentTabIndex == MainInfoPnl.ClientID)
                PartialSave1();
            else if (currentTabIndex == ContactInfoPnl.ClientID)
                PartialSave2();
            else if (currentTabIndex == BankInfoPnl.ClientID)
                PartialSave3();
            else if (currentTabIndex == ServicesPnl.ClientID)
                PartialSave4();
            else if (currentTabIndex == AttachmentsPnl.ClientID)
                PartialSave5();
        }

但是,下面的不是?

public void SaveCurrentTab(string currentTabIndex)
        {
            switch (currentTabIndex)
            {
                case MainInfoPnl.ClientID:
                    PartialSave1();
                    break;
                case ContactInfoPnl.ClientID:
                    PartialSave2();
                    break;
                case BankInfoPnl.ClientID:
                    PartialSave3();
                    break;
                case ServicesPnl.ClientID:
                    PartialSave4();
                    break;
                case AttachmentsPnl.ClientID:
                    PartialSave5();
                    break;
            }
        }

切换,如果在c#中

大概是因为MainInfoPnl.ClientID不是编译时常数。例如,它可能是public static readonly,它和const不一样。如果没有帮助,请向我们展示更多关于代码和您得到的错误消息。

对于switch, case语句必须是常量字符串——if条件没有这样的限制。

c#中的开关只适用于常量值。对于在运行时确定的值,使用if-else结构。

试试这个:

public void SaveCurrentTab(string currentTabIndex)
        {
            switch (Convert.ToInt32(currentTabIndex))
            {
                case (int)MainInfoPnl.ClientID:
                    PartialSave1();
                    break;
                case (int)ContactInfoPnl.ClientID:
                    PartialSave2();
                    break;
                case (int)BankInfoPnl.ClientID:
                    PartialSave3();
                    break;
                case (int)ServicesPnl.ClientID:
                    PartialSave4();
                    break;
                case (int)AttachmentsPnl.ClientID:
                    PartialSave5();
                    break;
            }
        }