去检查我一直在做的这个程序,我似乎又打了另一条路,错误说道;必须在控制离开当前方法之前将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];
}
}
}
答案 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]
的情况。