我可以在C#中动态检查开关的case语句吗?

象牙的

今天,我遇到了一个问题:我试图检查软件的错误,以便在出现错误时提供正确的程序行为。

我必须检查数据库中是否已经存在用户。

问题是后端没有提供errorId,因此我必须按文本检查错误。

错误显示为:

用户已经存在!

Switch语句是这样的:

switch (error.text)
{ 
  case "User Test already exists":
    Console.WriteLine("The user already Exists"); //this is a test behaviour. 
    break;
  default:
    Console.WriteLine("I couldn't behave in any way :<");
}

可以想象到名称都是不同的(这是数据库中的唯一字段),因此case语句中的“ Test”一词应该是用户的名称。

我可以动态更改字符串吗?

迈克·佩伦努德(Mike Perrenoud)

似乎正则表达式可以解决问题。我基于此模式构建了此正则表达式:

The user Name already Exists!

在哪里Name可以是任何值。正则表达式是:

(the user .* already exists)

要使用它,您将执行以下操作:

Regex.IsMatch(error.text, "(the user .* already exists)", RegexOptions.IgnoreCase)

根据匹配结果返回truefalse现在,无法在开关中完成此操作,但是您可以通过多个正则表达式运行该值来确定匹配的值。您可能会考虑的一件事是扩展方法。考虑一下这一点:

public static class RegexExtensions
{
    private static readonly Regex UserNameAlreadyExists = new Regex("(the user .* already exists)", RegexOptions.IgnoreCase | RegexOptions.Compiled);

    public static bool IsUserNameAlreadyExists(this string inputValue)
    {
        return UserNameAlreadyExists.IsMatch(inputValue);
    }
}

这样做的用法非常好:

if (error.text.IsUserNameAlreadyExists())
{
    // do something
}

扩展方法是一种很好的方法。它是完全封装的,可以使使用情况真正干净。此外,在一个地方定义正则表达式会更容易,从而将其设置为Compiled使其更快。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我可以在php中的开关内使用if语句吗?

来自分类Dev

C#重构开关语句与空检查

来自分类Dev

C#中的“虚拟”开关语句?

来自分类Dev

我可以/应该在C#中替换此GOTO语句吗

来自分类Dev

我可以在开关中多次使用相同的case值吗

来自分类Dev

我可以遍历TextBox ID来检查/更改ASP.NET C#中的值吗?

来自分类Dev

我可以遍历TextBox ID来检查/更改ASP.NET C#中的值吗?

来自分类Dev

C#我可以检查IntPtr是否为空吗?

来自分类Dev

C#速记开关语句

来自分类Dev

您可以在开关内使用if语句吗

来自分类Dev

我可以在选择语句中使用动态键对 Postgresql 中的 jsonb 数组求和吗?

来自分类Dev

我可以在参数中添加if语句吗?

来自分类Dev

我可以在参数中添加if语句吗?

来自分类Dev

我可以在LINQ语句中合并空检查吗?

来自分类Dev

我可以在LINQ语句中合并空检查吗?

来自分类Dev

我可以在case语句中使用数组吗?

来自分类Dev

我可以在开关中以某种方式使用if语句添加更多案例吗?

来自分类Dev

我可以在C#中返回匿名对象吗

来自分类Dev

我可以在C#中创建经典的VB数组吗?

来自分类Dev

我可以在C#中访问对象的字段吗

来自分类Dev

C#中的分页-我可以简化代码吗?

来自分类Dev

我可以在C#中反转DrawRectangle / FillRectangle的方向吗?

来自分类Dev

我可以在OneLiner(C#)中转换这两个LINQ语句吗

来自分类Dev

无论如何,我可以在 if 语句中将 int 与 int[] 进行比较吗?C#

来自分类Dev

我可以在运行时使用C#动态构建函数吗?

来自分类Dev

我可以告诉C#可为空的引用方法实际上是对字段的空检查吗

来自分类Dev

MediaInfo在C#中动态检查AudioStreams

来自分类Dev

我可以在 C++ 中使用 do while 语句在循环之前检查字符和 int 值吗?

来自分类Dev

开关语句C#的测试用例

Related 相关文章

  1. 1

    我可以在php中的开关内使用if语句吗?

  2. 2

    C#重构开关语句与空检查

  3. 3

    C#中的“虚拟”开关语句?

  4. 4

    我可以/应该在C#中替换此GOTO语句吗

  5. 5

    我可以在开关中多次使用相同的case值吗

  6. 6

    我可以遍历TextBox ID来检查/更改ASP.NET C#中的值吗?

  7. 7

    我可以遍历TextBox ID来检查/更改ASP.NET C#中的值吗?

  8. 8

    C#我可以检查IntPtr是否为空吗?

  9. 9

    C#速记开关语句

  10. 10

    您可以在开关内使用if语句吗

  11. 11

    我可以在选择语句中使用动态键对 Postgresql 中的 jsonb 数组求和吗?

  12. 12

    我可以在参数中添加if语句吗?

  13. 13

    我可以在参数中添加if语句吗?

  14. 14

    我可以在LINQ语句中合并空检查吗?

  15. 15

    我可以在LINQ语句中合并空检查吗?

  16. 16

    我可以在case语句中使用数组吗?

  17. 17

    我可以在开关中以某种方式使用if语句添加更多案例吗?

  18. 18

    我可以在C#中返回匿名对象吗

  19. 19

    我可以在C#中创建经典的VB数组吗?

  20. 20

    我可以在C#中访问对象的字段吗

  21. 21

    C#中的分页-我可以简化代码吗?

  22. 22

    我可以在C#中反转DrawRectangle / FillRectangle的方向吗?

  23. 23

    我可以在OneLiner(C#)中转换这两个LINQ语句吗

  24. 24

    无论如何,我可以在 if 语句中将 int 与 int[] 进行比较吗?C#

  25. 25

    我可以在运行时使用C#动态构建函数吗?

  26. 26

    我可以告诉C#可为空的引用方法实际上是对字段的空检查吗

  27. 27

    MediaInfo在C#中动态检查AudioStreams

  28. 28

    我可以在 C++ 中使用 do while 语句在循环之前检查字符和 int 值吗?

  29. 29

    开关语句C#的测试用例

热门标签

归档