Winforms - 非静态字段,方法或属性需要对象引用

时间:2016-05-27 14:38:36

标签: c# winforms webclient-download

我试图制作一个"更新程序"对于我的程序,我需要做的一件事是从URL下载exe。我尝试使用WebClient.DownloadFilehttps://msdn.microsoft.com/en-us/library/ez801hhe(v=vs.110).aspx),但我收到了错误:An object reference is required for the nonstatic field, method, or property 'WebClient.DownloadFile(string, string)'。我认为这是一个我忽略的愚蠢行为,但我很难搞清楚。任何帮助表示赞赏。

代码:

private void Update()
{
    string downloadURL = EXE_LOCATION;
    string progName = Application.ExecutablePath.Substring(Application.ExecutablePath.LastIndexOf("\\") + 1);
    string progLoc = Application.ExecutablePath.Substring(0, Application.ExecutablePath.LastIndexOf("\\") + 1);

    if (File.Exists(progLoc + progName))
    {
        try
        {
            File.Move(progLoc + progName, progLoc + "Old-version.exe");
        }
        catch (Exception ex)
        {
            Console.WriteLine("Problem renaming: " + ex.Message);
        }
    }

    WebClient.DownloadFile(downloadURL, progLoc + progName);
}

1 个答案:

答案 0 :(得分:4)

using (var wc = new WebClient())
{
    wc.DownloadFile(downloadURL, progLoc + progName);
}

WebClient只是班级的名称。您需要引用该类的实例。理解类型,实例,引用和变量之间的区别至关重要;除非你很好理解,否则你很难成为一名有效的程序员。

我在这里时:摆脱File.Exists()检查。你已经抓住了一个例外。如果文件不存在,那就让它处理问题。