【问题标题】:Checking string value of variable in switch case using c#使用c#在switch case中检查变量的字符串值
【发布时间】:2019-03-12 17:38:42
【问题描述】:

我正在检查变量用户名是否包含“ali”,这是 switch case 中的字符串值,但我的老师早些时候告诉我,您只能检查数据类型 char 和 int 但它与字符串一起工作正常,所以我很困惑检查switch 中的字符串数据类型是不是好习惯?

string userName = "Ali";//the variable i want to check

switch(userName)
{
  case "Ali"://value i want to check
  Console.WriteLine("found");
  break;

  default:
  Console.WriteLine("not found");
  break;

}

【问题讨论】:

  • 不清楚问题是什么。如您所述,您可以在 C# 的 switch 语句中使用字符串。
  • 是时候找一所新学校了。 FWIW,你不能在 C 或 C++ 中做到这一点。可能您的讲师混淆了他/她的语言。
  • 我的问题是我正在检查变量用户名是否包含“ali”,这是 switch case 中的字符串值,但我的老师早些时候告诉我,您只能检查数据类型 char 和 int,但它工作正常使用字符串,所以我很困惑在 switch 中检查字符串数据类型是否是好习惯?
  • 是的,这在技术上没有任何问题,尽管您无法像直接比较两个字符串那样控制文化或区分大小写。也许您的老师建议您应该使用常量,但他们仍然认为不能这样做是错误的。请他们澄清。
  • 明天是我的论文,我很担心她是否会接受我的观点,顺便谢谢大家。

标签: c# switch-statement


【解决方案1】:

您当然可以在 switch 表达式中使用字符串。

在 C# 6.0 中,您可以使用整数值、枚举、布尔值、字符和字符串。从 C# 7.0 开始,您可以使用任何非空表达式。更多详情请参阅the official documentation

【讨论】:

  • 谢谢我检查他们也使用字符串值。来自我的尊重。
【解决方案2】:

是的,你可以做到。但不是你尝试做的方式。您在 switch 中的字符串是大写的,但变量不是。还有你的变量名为 userName,但在 switch 中你尝试使用 userName。试试这个代码:

string userName = "Ali";

switch(userName.ToLower()) 
{
    case "ali":
        Console.WriteLine("found");
        break;
    default:
        Console.WriteLine("not found");
        break;
}

【讨论】:

  • 是的,你是对的,当我输入它时我忘记了,谢谢
【解决方案3】:

字符串可以使用流控开关

but you find two error in your coding, because c# case sensitive

string userNAme and and you write switch(userName)

break: change to break;

【讨论】:

  • 是的,我知道区分大小写,我只是输入了演示代码来询问我的代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-15
  • 1970-01-01
  • 2012-05-01
  • 1970-01-01
  • 2020-05-08
相关资源
最近更新 更多