输出参数问题

时间:2015-02-10 21:43:55

标签: c#

去检查我一直在做的这个程序,我似乎又打了另一条路,错误说道;必须在控制离开当前方法之前将out参数'checkedIfInsured'分配给。

如果有必要,我可以粘贴剩下的代码但是看着它,看起来很好。

static void GetData(out int patientsID, out string patientsName, out int patientsAge, out decimal patientsAmount, object o, out char checkedIfInsured)
    {
        string inString;
        int count = 3;
        char test;
        Console.Write("Please enter Patients ID number>> ");
        inString = Console.ReadLine();
        int.TryParse(inString, out patientsID);
        Console.Write("Please Enter Name for " + "Patient {0} >> ", patientsID);
        patientsName = Console.ReadLine();
        Console.Write("Please Enter The Age For " + "Patient {0}>> ", patientsName);
        inString = Console.ReadLine();
        int.TryParse(inString, out patientsAge);
        Console.Write("Please Enter The Amount Due For " + "Patient {0}>> ", patientsID);
        inString = Console.ReadLine();
        decimal.TryParse(inString, out patientsAmount);
        Console.WriteLine("-----------------------------------");

        if (o is InsuredPatient)
        {
            Console.WriteLine(" Enter the name of the Patients Insurance Company Code>>");
                for (int x = 0; x < count; ++x)
                    Console.WriteLine("{0,-3} = {1,5}", InsuredPatient.InsurerCharacter[x], InsuredPatient.InsurerName[x]);
            Console.WriteLine(" Enter talent code >> ");
            test = Console.ReadKey().KeyChar;

            for (int i = 0; i < InsuredPatient.InsurerCharacter[i]; ++i)
                if (test == InsuredPatient.InsurerCharacter[i])
                {
                   checkedIfInsured = InsuredPatient.InsurerCharacter[i];
                }
        }


    }

6 个答案:

答案 0 :(得分:0)

您只是在'if'块中指定'checkedIfInsured'。如果条件不成立,则不会被分配,这就是编译器所抱怨的。

确保在'if'块之外指定'checkedIfInsured'。

答案 1 :(得分:0)

如果checkIfInsured,您只需指定o is InsuredPatient参数。编译器告诉您需要将始终分配给。

答案 2 :(得分:0)

您只在一个特定条件分支中为checkedIfInsured提供值。编译器告诉你,必须在方法结束之前给它一个值,无论它采用什么条件分支。

您可以通过在方法开头将checkedIfInsured设置为默认值来避免此错误。

答案 3 :(得分:0)

如果if不成立,您仍需要在else中指定一个值。代码的所有分支都必须返回一个值。

    if (o is InsuredPatient)
    {//...}
    else{
        //default to whatever.
        checkedIfInsured = myDefaultInsuredCheckedValue;
    }

答案 4 :(得分:0)

checkedIfInsured可能并不总是具有值,因为它在if块中。如果不满足if的标准怎么办?

答案 5 :(得分:0)

编译器抱怨,因为存在未设置checkedIfInsured的代码路径,即test变量不等于InsuredPatient.InsurerCharacter[i]的情况。

您可以做的是将checkedIfInsured设置为方法开头的某个默认字符,以处理test不等于InsuredPatient.InsurerCharacter[i]的情况。