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

本文关键字:main 调用 方法 void 静态 C#- | 更新日期: 2023-09-27 17:59:20

我在static void main中有一些代码,尽管我希望它从static void main调用startremup方法(就像它调用RemoveDuplicate一样,带有适当的参数),但我已经尝试了startremup();

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");
}

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

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

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

就我个人而言,它看起来应该是一个静态的方法,最好是一个更合理的名称,但这就是为什么它当时不起作用的原因。

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

使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");
}

也将方法设为static

如果从静态方法(如Main())调用startremup和removedduplicate,则需要将其声明为静态

除非在对象引用上调用非静态方法,否则不能从静态方法中调用它们。看看这个。

您需要使这两个方法都是静态的,或者创建Main类的实例并从中调用方法。

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