切换案例实现

时间:2012-12-02 20:32:50

标签: 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 (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

2 个答案:

答案 0 :(得分:1)

在switch语句中只能使用某些类型,其中一种是字符串。
你不应该忘记switch语句中的中断

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

答案 1 :(得分:0)

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

您的切换表达式res1的类型为HttpWebResponse,如错误所示,不允许这样做。

case标签必须是编译时常量,不允许使用res1.Headers["XcT"]之类的任意表达式。

不允许在标签之间摔倒。所有案例标签(以及default标签)必须包含breakreturn或抛出异常。此规则的例外是您可能有多个标签执行相同的语句块,如下所示:

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