任何人都可以帮助我 - 我是C#控制台应用程序的新手,并试图定义一个子程序来替换文件中的一串文本。
我不断收到错误:
Error CS0119 'Program.Main(string[])' is a method, which is not valid in the given context SSReplace d:\users\mtait\documents\visual studio 2015\Projects\SSReplace\SSReplace\Program.cs
感谢您的帮助,
标记
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Text.RegularExpressions;
namespace SSReplace
{
class Program
{
static void Main(string[] args)
{
SSReplace.Program.Main.ReplaceInFiles("D:\\users\\mtait\\documents\\visual studio 2015\\Projects\\SSReplace\\test_fic_ISUK.txt", "Begin", "Begin2");
}
/// <summary>
/// Replaces text in a file.
/// </summary>
/// <param name="filePath">Path of the text file.</param>
/// <param name="searchText">Text to search for.</param>
/// <param name="replaceText">Text to replace the search text.</param>
public void ReplaceInFiles(string filePath, string searchText, string replaceText)
{
StreamReader reader = new StreamReader(filePath);
string content = reader.ReadToEnd();
reader.Close();
content = Regex.Replace(content, searchText, replaceText);
StreamWriter writer = new StreamWriter(filePath);
writer.Write(content);
writer.Close();
}
}
}
答案 0 :(得分:2)
您需要将方法标记为静态:
public static void ReplaceInFiles
静态方法无法调用实例方法,因为没有创建Program
的实例。
要调用该方法,只需使用其名称ReplaceInFiles
,因为它位于同一个命名空间和同一个类中。无需使用之前的完整SSReplace.Program.Main
。
来自C#规格:
使用static修饰符声明的方法是静态方法。静止的 方法不能在特定实例上运行,只能直接运行 访问静态成员。
没有静态修饰符声明的方法是实例方法。一个 instance方法在特定实例上运行,并且可以访问两者 静态和实例成员。实例方法的实例 被调用的可以像这样显式访问。这是一个错误 请参考静态方法。
答案 1 :(得分:0)
首先:在C#中没有子程序,它被称为方法。
第二:方法(与任何其他成员一样)在类中定义,因此属于该类的实例或类本身< / em>(static
成员)。因此写下这个:
var p = new Program(); // create a new instance of Program
p.ReplaceInFiles(myFile, "Begin", "Begin2"); // call the method on that instance
由于您已经在命名空间SSReplace
中,您还可以省略代码中的部分。
另外制作方法static
。然后你可以这样称呼它:
Program.ReplaceInFiles(myFile, "Begin", "Begin2");
请注意,既没有命名空间也没有Main
- 方法的名称。但是,即使Program
- 部分是可选的,也使以下内容有效:
ReplaceInFiles(myFile, "Begin", "Begin2");