Path.getfilename错误 - 对象引用错误(CS0120)

时间:2013-08-01 11:25:02

标签: c#

noob在这里。我正在尝试编写一个代码来显示和打开文件路径,经过多次搜索和痛苦后,我仍然无法通过An object reference is required for the non-static field, method, or property (CS0120)错误。

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using ArrayList = System.Collections.ArrayList;

namespace Risk_Stats
{
    public class Risk_stats_CSV_generator
    {
        string outputPath = Path.GetFileName( Path.GetDirectoryName( @"U:\XXXX" ) );        
        public static void Main(string[] args)
        {
            System.Diagnostics.Process.Start(outputpath);
        }
    }
}

我正在努力理解这个错误的可用解决方案。对象引用是什么意思?它将如何放在代码中?

1 个答案:

答案 0 :(得分:1)

您的outputPath也需要声明为静态。

private static string outputPath = Path.GetFileName( Path.GetDirectoryName( @"U:\XXXX" ) );        

public static void Main(string[] args)
{
    System.Diagnostics.Process.Start(outputpath);
}

在您的原始版本中,您尝试访问与Risk_stats_CSV_generator实例绑定的成员,但是静态成员没有要引用的实例,因此不允许这样做。

您可以通过将类更改为静态来缓解这些错误,例如:

namespace Risk_Stats
{

    public static class Risk_stats_CSV_generator
    {

        ...

    }

}

这将阻止您使用非静态成员。