C# – 如何从静态主要方法调用一个方法

我有一些代码在静态无效的主要,虽然我想调用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"); } 

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

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

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

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

如果我是你,我实际上是放下你目前的任务,拿起一本很好的介绍性的C#书 – 学习静态和实例成员之间的区别等。

让你的方法也是static

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

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

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

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