我不明白为什么我得到这个“需要对象引用”错误

时间:2013-01-22 10:57:11

标签: c# exception object reference error-handling

此代码读取文件数组,并将它们传递给以下类库。

    private void btnConvert_Click(object sender, EventArgs e)
    {
        if (rbtnNetIX.Checked == true)
        {
            string[] files = Directory.GetFiles(txtPath.Text, "*.txt");
            NetEDI.NetIX.Seiko.Seiko.Main(files);

        }

应该由以下代码引用。

public class Seiko
{
    public void Main(string[] args)
    {
        List<FileDefinition.FileDefinition> fileDefs = new List<FileDefinition.FileDefinition>();
        foreach (string fileEntries in args)
        {

            fileDefs.Add(CreateFileDef(fileEntries));
        }

        foreach (var fileDef in fileDefs)
        {
            XmlCreator CreateXmlDefinition = new XmlCreator(fileDef.FileName + ".xml", fileDef);
        }
    }

2 个答案:

答案 0 :(得分:9)

Main不是 static ,因此您首先需要对Seiko类的对象引用,以便调用它。

所以,这里:NetEDI.NetIX.Seiko.Seiko.Main(files); - 这是对非静态方法的静态调用,因此是错误。

答案 1 :(得分:2)

查看您的Main方法声明:

public void Main(string[] args)

这是实例方法 - 您必须在Seiko的实例上调用它。但是当你试着在这里打电话时:

NetEDI.NetIX.Seiko.Seiko.Main(files);

...你试图把它称为静态方法。

鉴于围绕Main的约定,我强烈怀疑你想让它成为一个静态方法。

(顺便说一下,你应该修改静态成员和实例成员之间的区别,然后再看一下错误信息:看看你是否可以解决为什么你自己没有弄清楚问题,以便下次你遇到类似的东西,你可以解决它。)