C# 开关盒实现

C# 开关盒实现,c#,switch-statement,C#,Switch Statement,我向站点发送Get请求,根据响应我必须执行smthng HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://www.site.ru/sfdcsfs/"); req.AllowAutoRedirect = false; req.Method = "GET"; req.CookieContainer = cookies; req.UserAgent = "Opera/9.80 (Wind

我向站点发送Get请求,根据响应我必须执行smthng

                HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://www.site.ru/sfdcsfs/");
req.AllowAutoRedirect = false;
req.Method = "GET";
req.CookieContainer = cookies;
req.UserAgent = "Opera/9.80 (Windows 7; U; en) Presto/2.9.168 Version/11.50";
req.ContentType = "application/x-www-form-urlencoded";
res1 = (HttpWebResponse)req.GetResponse();
res1.Close();
switch (res1)
{
    case res1.Headers["XcT"]: log("[+] ok");
    case res1.Headers["Location"].Contains("alreadymember"): log("[-] alreadymember");
    default: log("[-] bad");
}
但我有错误

Error   1   A switch expression or case label must be a bool, char, string, integral, enum, or corresponding nullable type  C:\Users\asus\documents\visual studio 2010\Projects\OdGP\OdGP\Form1.cs  195 29  OdGP

switch语句中只能使用某些类型,其中之一是string。您不应该忘记break-in-switch语句

switch (res1.Headers["XcT"].ToString())
{
    case "[+] ok":
       log("[+] ok");
       break;
    default: log("[-] bad");
}

我建议您阅读有关语句的文档,因为这里有几个错误

您的开关表达式res1具有HttpWebResponse类型,正如错误所述,这是不允许的

案例标签必须是编译时常量,也不允许使用诸如res1.Headers[XcT]之类的任意表达式

标签之间不允许出现漏贴现象。所有案例标签和默认标签必须具有中断、返回或引发异常。此规则的例外情况是,可能有多个标签执行相同的语句块,如下所示:

int i = 0;
switch (i) 
{
  case 0:
  case 1:
   Console.WriteLine(i); break;
  default: break;
}

关于错误消息,您不了解的是什么?只有一个大小写的switch语句?为什么不使用if/else呢?