在尝试捕获中使用未分配的局部变量

原告

似乎这个特定的错误已经解决了很多次,但是我的代码段却有所不同,因为它永远不会导致“未分配”的错误。

该代码来自我正在上学的一个项目。我可以寻求帮助,这是我希望在这里找到的。我不在乎掩盖任何变量或任何不是出于商业目的的变量。

这是编译时的错误:“使用未分配的局部变量'dateStartedActual'”

switch (userType)
{
    case "Doctor":
        string qualification = Microsoft.VisualBasic.Interaction.InputBox("What is the highest qualification this person has", "Qualification", "", -1, -1);
        while (dateStarted == "")
        {
            try
            {
                dateStarted = Microsoft.VisualBasic.Interaction.InputBox("On which date did this person start", "Date Started", "", -1, -1);
                int day = Convert.ToInt32(Regex.Match(dateStarted, @"\d{2}").Value);
                dateStarted.Remove(0,3);
                int month = Convert.ToInt32(Regex.Match(dateStarted, @"\d{2}").Value);
                dateStarted.Remove(0,3);
                int year = Convert.ToInt32(Regex.Match(dateStarted, @"\d{4}").Value);
                dateStartedActual = new DateTime(day, month, year);
            }
            catch (Exception ex)
            {
                MessageBox.Show("The date entered is not valid");
                dateStarted = "";
            }
        }
        string field = Microsoft.VisualBasic.Interaction.InputBox("In which field does this person practice", "Field", "", -1, -1);
        CreateDoctor(qualification, dateStartedActual, field);
        break;
乔恩·斯基特

我的代码段有一些不同之处,那就是永远不会导致“未分配”错误

好吧,它显然确实会导致该错误,这就是为什么您问这个问题,不是吗?

即使知道任何时候都会引发异常,您都将再次循环,编译器也不知道...因此出错。该值明确分配。当然,您可以先给它一个虚拟值-但就我个人而言,我不喜欢这样做。

您最好将解析代码提取到一个单独的方法中,该方法可能类似于:

static DateTime RequestStartDate()
{
    while (true)
    {
        try
        {
            // Ask for date and parse it
            // ...
            return parsedDate;
        }
        catch (Exception e) // See below...
        {
            MessageBox.Show("The date entered is not valid");
        }
    }
}

该方法肯定会DateTime最终返回一个值,否则将永远循环下去-因此,通过调用该方法分配的任何变量都将被明确分配。

然后可以在您的主要代码中编写:

switch (userType)
{
    case "Doctor":
        string qualification = Microsoft.VisualBasic.Interaction.InputBox("What is the highest qualification this person has", "Qualification", "", -1, -1);
        DateTime dateStarted = RequestStartDate();
        string field = Microsoft.VisualBasic.Interaction.InputBox("In which field does this person practice", "Field", "", -1, -1);
        CreateDoctor(qualification, dateStarted, field);
        break;

顺便说string.Remove一句,您正在打电话而不理会结果-总是一个坏主意。手动解析日期是不必要的复杂操作DateTime.TryParseExact

另外,捕获Exception通常不是一个好主意-您应该捕获特定的异常...尽管使用DateTime.TryParseExact时不需要捕获任何东西,因为false如果无法解析该值,它将返回

我还建议您至少有一个using指令,Microsoft.VisualBasic以便您可以使用:

string qualification = Interaction.InputBox(...);

等等,而不是每次都有很长的线。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

尝试返回 bool 时使用未分配的局部变量

来自分类Dev

在Graphics.Drawing中使用未分配的局部变量

来自分类Dev

在调试中使用未分配的局部变量

来自分类Dev

使用未分配的局部变量“ x”

来自分类Dev

使用未分配的局部变量“ strCity”

来自分类Dev

使用未分配的局部变量“ SHELLEXECUTEINFO”

来自分类Dev

使用未分配的局部变量数组

来自分类Dev

使用未分配的局部变量“ folderPath”

来自分类Dev

错误“使用未分配的局部变量”?

来自分类Dev

使用未分配的局部变量“书”

来自分类Dev

在分配它的if-else语句中使用未分配的局部变量

来自分类Dev

使用已分配的未分配局部变量

来自分类Dev

在while条件中使用未分配的局部变量和“无法写入已关闭的TextWriter”。

来自分类Dev

错误在C#中使用未分配的局部变量(开关)

来自分类Dev

在我的课程中使用未分配的局部变量(C#,silverlight)

来自分类Dev

使用foreach循环时使用未分配的局部变量

来自分类Dev

使用异步/等待时使用未分配的局部变量

来自分类Dev

C#使用未分配的局部变量

来自分类Dev

在finally块上使用未分配的局部变量

来自分类Dev

C#Winform使用未分配的局部变量

来自分类Dev

抑制“使用未分配的局部变量”错误?

来自分类Dev

C#使用未分配的局部变量异常

来自分类Dev

使用未分配的局部变量c#

来自分类Dev

使用Try,catch,finally的局部变量未分配问题

来自分类Dev

C#未分配的局部变量?

来自分类Dev

在带有TryParse的if语句中使用动态分配的if语句中的“未分配的局部变量的使用”

来自分类Dev

在程序中使用非类型模板参数而未分配局部变量时出现意外结果?

来自分类Dev

模式匹配和未分配的局部变量

来自分类Dev

未分配的局部变量和短路评估

Related 相关文章

  1. 1

    尝试返回 bool 时使用未分配的局部变量

  2. 2

    在Graphics.Drawing中使用未分配的局部变量

  3. 3

    在调试中使用未分配的局部变量

  4. 4

    使用未分配的局部变量“ x”

  5. 5

    使用未分配的局部变量“ strCity”

  6. 6

    使用未分配的局部变量“ SHELLEXECUTEINFO”

  7. 7

    使用未分配的局部变量数组

  8. 8

    使用未分配的局部变量“ folderPath”

  9. 9

    错误“使用未分配的局部变量”?

  10. 10

    使用未分配的局部变量“书”

  11. 11

    在分配它的if-else语句中使用未分配的局部变量

  12. 12

    使用已分配的未分配局部变量

  13. 13

    在while条件中使用未分配的局部变量和“无法写入已关闭的TextWriter”。

  14. 14

    错误在C#中使用未分配的局部变量(开关)

  15. 15

    在我的课程中使用未分配的局部变量(C#,silverlight)

  16. 16

    使用foreach循环时使用未分配的局部变量

  17. 17

    使用异步/等待时使用未分配的局部变量

  18. 18

    C#使用未分配的局部变量

  19. 19

    在finally块上使用未分配的局部变量

  20. 20

    C#Winform使用未分配的局部变量

  21. 21

    抑制“使用未分配的局部变量”错误?

  22. 22

    C#使用未分配的局部变量异常

  23. 23

    使用未分配的局部变量c#

  24. 24

    使用Try,catch,finally的局部变量未分配问题

  25. 25

    C#未分配的局部变量?

  26. 26

    在带有TryParse的if语句中使用动态分配的if语句中的“未分配的局部变量的使用”

  27. 27

    在程序中使用非类型模板参数而未分配局部变量时出现意外结果?

  28. 28

    模式匹配和未分配的局部变量

  29. 29

    未分配的局部变量和短路评估

热门标签

归档