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