繁体   English   中英

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

[英]C# - How to call a method from static void main

我在静态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");
}

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())调用startremdup和removeduplicate,则需要将其声明为static

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM