我的代码在我的公共静态字符串ValidateCreditScore(int creditscore,string status)中返回一个错误,即一个名为" status"的本地或参数。无法在此范围内声明,因为该名称在封闭的本地范围中用于定义本地或参数。
基本上我只想返回那个语句,这样我就可以把它放在我的占位符中,它表示" {0}是{1},applicantName,applicant.status。 我希望声明说出这个名字,并说明信用评分是否可以接受。
我的问题是,我甚至需要我的公共静态字符串ValidateCreditScore(int creditscore,string status)中的字符串状态,因为我已经将信用评分传递给它了吗?还是我需要它,因为我要回来......
using System;
public class MortgageApplication
{
public static void Main(string[] args)
{
int creditScore = 0;
string applicantName = "";
char userInput = 'n';
string status = "";
Console.WriteLine("** CSCC Mortgage Company **");
Console.Write("\nWould you like to run this program [y, n]? ");
userInput = Convert.ToChar(Console.ReadLine());
while (!(userInput == 'n'))
{
Console.Write("Please enter the applicant's name: ");
applicantName = Console.ReadLine();
Console.Write("Enter credit score: ");
creditScore = Convert.ToInt32(Console.ReadLine());
try
{
Applicant applicant = new Applicant(applicantName, creditScore, status);
Console.WriteLine("{0} is {1}", applicantName,applicant.status);
}
catch (ArgumentException anyException)
{
Console.WriteLine(anyException.Message);
}
Console.Write("Would you like to run this program [y, n]? ");
userInput = Convert.ToChar(Console.ReadLine());
}
Console.WriteLine("Please press the <enter> key to terminate the program.");
Console.ReadLine();
}
}
public class Applicant
{
public Applicant(string name, int creditscore, string status)
{
Name = name;
CreditScore = creditscore;
status = ValidateCreditScore(creditscore, status);
}
public string Name { get; private set; }
public double CreditScore { get; private set; }
public string status { get; private set; }
public static string ValidateCreditScore(int creditscore, string status)
{
try
{
if (creditscore <= 299 && creditscore >= 851)
{
throw new ArgumentException("Value does not fall within the expected range.");
}
if (creditscore <= 649)
{
string status = Convert.ToString("not accepted");
return status;
}
if (creditscore >=650 )
{
string status = Convert.ToString("accepted");
return status;
}
}
catch (ArgumentException anyException)
{
Console.WriteLine(anyException.Message);
}
return "Not Accepted";
}
}
答案 0 :(得分:0)
您收到错误,因为传递到ValidateCreditScore
的其中一个变量名为“status”
public static string ValidateCreditScore(int creditscore, string status)
然后你尝试在以后创建另一个具有相同名称的变量:
if (creditscore <= 649)
{
string status = Convert.ToString("not accepted");
return status;
}
将其中一个变量重命名为其他变量,它应该有效。
此外,不需要Convert.ToString()
,并且在返回之前不需要将字符串存储在变量中。所以上面的行变成了
if(creditscore <= 649)
{
return "not accepted";
}
最后,看起来传递给ValidateCreditScore
的状态甚至没有在函数中使用,所以你可以摆脱它。
答案 1 :(得分:0)
您收到此错误是因为您将一个名为status
的变量传递给您的方法,但之后您还尝试声明一个具有相同名称的变量。您甚至不需要在方法中声明变量,您可以像这样重写代码:
if (creditscore <= 649)
{
return "not accepted";
}
if (creditscore >=650 )
{
return "accepted";
}
答案 2 :(得分:0)
您的方法ValidateCreditScore中不需要status参数。 只需返回字符串而不必使用如下变量: ...
return Convert.ToString("accepted");
或
return Convert.ToString("not accepted");
因此,请删除方法中的该参数并修复构建错误。