调用c#中的子程序
本文关键字:子程序 调用 | 更新日期: 2023-09-27 18:06:23
有人可以帮助我-我是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();
}
}
}
你需要将你的方法标记为static:
public static void ReplaceInFiles
静态方法不能调用实例方法,因为没有创建Program
的实例。
要调用该方法,只需使用其名称ReplaceInFiles
,因为它位于相同的命名空间和相同的类中。不需要使用完整的SSReplace.Program.Main
。
来自c#规范:
用静态修饰符声明的方法是静态方法。一个静态方法不能在特定实例上操作,只能直接访问静态成员
没有静态修饰符的方法是实例方法。一个方法在特定实例上操作,并且可以访问这两个实例静态成员和实例成员。实例方法所作用的实例被调用的对象可以显式地访问。……是错误的在静态方法中引用它。
首先:在c#中没有子程序这种东西,它被称为方法。
第二:方法(作为任何其他成员)在类中定义,因此属于该类的实例或类本身 (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");