首页 > 解决方案 > 如果使用字符串值以防万一,那么我们不需要在比较之前转换格式吗?

问题描述

我在一个项目中使用了下面的代码,有人要求我使用ToLower()orToUpper()我认为这是不必要的。

public somefun(Classabc clsabc, string emptype, string id)
{
    switch(emptype)
    {
        case :"AnyInput":
            {
            //do 
            }
            break;
        case :"StringInput":
            {
            //do 
            }
            break;
    }
}

if(emptype=="AnyInput")
{
    ///
}

以上是完美的还是我们需要使用ToLower()or ToUpper()with empTypein if()?我的代码是否存在任何问题或违反编程规则?根据我在case( switch) 中的说法,我们使用电子邮件类型作为大小写匹配的常量,如果emptype值可以用于大小写匹配,那么在字符串匹配之前无需添加额外的函数来转换为大小写。

标签: c#

解决方案


取决于你们在寻找什么。

如果比较区分大小写,您可以像在您提供的示例中那样保留 switch-case 比较。

如果比较不敏感,您可以进行模式匹配(C# 7 及更高版本)并编写如下内容:

switch (true)
{
    case bool b when emptype.Equals("AnyInput", StringComparison.InvariantCultureIgnoreCase): 
        // do
        break;
    case bool b when emptype.Equals("StringInput", StringComparison.InvariantCultureIgnoreCase): 
        // do
        break;
    default:
        break;
}

推荐阅读