第一行代码被标记为无法访问,但第二行不是,为什么
本文关键字:为什么 访问 二行 记为 一行 代码 | 更新日期: 2023-09-27 18:34:25
>根据Visual Studio 2015,第一个case
语句中的第一行代码无法访问,但我不明白为什么。同一 case
语句中的第二行代码未标记为无法访问,并且 default
语句中的所有代码都是可访问的。VS只是愚蠢还是我在这里错过了什么?
private static void LogToITSupport(string ErrorType)
{
var Email = new MailMessage();
Email.To.Add("");
Email.From = new MailAddress("");
switch ("ErrorType")
{
case "Database Connection":
Email.Subject = "JobSight Error, unable to connect to database.";
Email.Body = "JobSight is unable to connect to the JobSight database, this could indicate the databse is dow nor there is a server problem. Please investigate.";
break;
default:
Email.Subject = "JobSight has encountered an unknown error.";
Email.Body = "JobSight has encountered an unknown error and thinks that IT should fix it. Good Luck.";
break;
}
var Client = new SmtpClient("");
Client.Send(Email);
}
回答您的实际问题。您正在打开文本字符串"ErrorType",您的选项是"数据库连接"或其他任何内容。
由于编译器正在查看文本字符串,因此它知道数据库连接永远不会是这种情况,因此无法访问。
例如,如果您将开关更改为"数据库连接",您会注意到第一行没问题,但默认情况下会收到该错误,因为编译器知道数据库连接是唯一可以访问的内容。
通过使用实际的变量开关(ErrorType),编译器不知道将传入什么,因此大小写和默认值都可能是可以访问的。
正如其他人指出的那样,删除引号是因为您想打开变量 ErrorType 包含的字符串。
字符串
文字"ErrorType"
永远不能等于"Database Connection"
所以编译器只是告诉你。
您可能希望改用 ErrorType
变量:
switch (ErrorType)
{
case "Database Connection":
Email.Subject = "JobSight Error, unable to connect to database.";
Email.Body = "JobSight is unable to connect to the JobSight database, this could indicate the databse is dow nor there is a server problem. Please investigate.";
break;
default:
Email.Subject = "JobSight has encountered an unknown error.";
Email.Body = "JobSight has encountered an unknown error and thinks that IT should fix it. Good Luck.";
break;
}
现在,如果 ErrorType
变量等于 "Database Connection"
则将执行第一条语句,否则将执行默认语句。此评估将在运行时完成,具体取决于字符串变量的值。