C# - 如何从静态void main调用方法

时间:2011-06-17 15:36:14

标签: c# .net windows

我在静态void main中有一些代码,虽然我希望它从static void main调用startremdup方法(因为它调用RemoveDuplicate,带有适当的参数),我试过startremdup();

private void RemoveDuplicate(string sourceFilePath, string destinationFilePath)
{
    var readLines = File.ReadAllLines(sourceFilePath, Encoding.Default);

    File.WriteAllLines(destinationFilePath, readLines.Distinct().ToArray(), Encoding.Default);
}


private void startremdup(object sender, EventArgs e)
{
    RemoveDuplicate("C:\test.txt", "C:\test2.txt");
}

7 个答案:

答案 0 :(得分:13)

startremdup实例方法。这意味着你需要在它包含的任何类的实例上调用它。例如:

Foo foo = new Foo();
foo.startremdup(null, EventArgs.Empty);

就个人而言,它看起来应该是一个静态的方法 - 最好是一个更明智的名字 - 但这就是为什么它当时不起作用。

如果我是你,我实际上会放下你当前的任务,拿起一本好的C#入门书 - 了解静态和实例成员之间的区别等。

答案 1 :(得分:5)

startremdup()RemoveDuplicate()设为静态。

private static void RemoveDuplicate(string sourceFilePath, string destinationFilePath)
{
    var readLines = File.ReadAllLines(sourceFilePath, Encoding.Default);

    File.WriteAllLines(destinationFilePath, readLines.Distinct().ToArray(), Encoding.Default);
}


private static void startremdup(object sender, EventArgs e)
{
    RemoveDuplicate("C:\test.txt", "C:\test2.txt");
}

答案 2 :(得分:2)

制作方法static

答案 3 :(得分:2)

如果从静态方法(例如Main())调用它,则需要将start_redup和removeduplicate声明为static

答案 4 :(得分:1)

除非在对象引用上调用静态方法,否则不能从静态方法调用非静态方法。检查this

答案 5 :(得分:1)

您需要将这两个方法都设置为静态,或者创建Main类的实例并从中调用该方法。

答案 6 :(得分:1)

声明private static void startremdup(object sender, EventArgs e),因为静态方法无法调用实例方法,因为它们没有this