我正在尝试建立一个网站上下检查器。但当我尝试运行程序时,我会得到以下错误:(无法将运算符"!"应用于"string"类型的操作数(
我该怎么修?
我是c#btw.的新手
错误在if语句中。
这是代码:
using System;
using System.Net;
namespace cc
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Enter Your Website for further checking: ");
string url = Console.ReadLine();
System.Threading.Thread.Sleep(3);
Console.WriteLine("Checking...");
System.Threading.Thread.Sleep(3);
Console.WriteLine("Found some shit.");
System.Threading.Thread.Sleep(3);
Console.WriteLine("Printing Request...");
WebClient client = new WebClient();
string checksite = client.DownloadString(url);
if (!checksite == HttpStatusCode.OK)
{
Console.WriteLine("Your Bitch is Down!");
}
}
}
}
首先,(!string == othervalue)
并不是你认为的那样。你对一个字符串取否定,这毫无意义,然后看看它是否等于另一边的值,因为!
的运算符优先级高于==
。
但假设您解决了这个问题:A != B
或!(A == B)
都可以工作。您仍然有一个问题,因为数据类型很重要。检查两种不同对象的相等性是没有意义的。
在这种情况下,DownloadString()
根本不返回HttpStatusCode
。它以字符串的形式返回页面提供的任何HttpResponse的主体,并且为任何不好的状态代码抛出异常。
所以你想要这个:
try
{
client.DownloadString(url);
}
catch(WebException ex)
{
Console.WriteLine("Your site is Down!");
}
为了检查字符串是否不是"something",您必须添加类似的()
:
!(checksite == HttpStatusCode.OK)
或
checksite != HttpStatusCode.OK
您必须使用比较
目前,您试图否定字符串本身,这是不可能的。
附言:我会把输出改成不那么令人反感的。