C# 在C中调用子例程#
有谁能帮我一下吗?我对C#console应用程序还不熟悉,正在尝试定义一个子程序来替换文件中的字符串 不过,我还是不断发现错误:C# 在C中调用子例程#,c#,console,console-application,C#,Console,Console Application,有谁能帮我一下吗?我对C#console应用程序还不熟悉,正在尝试定义一个子程序来替换文件中的字符串 不过,我还是不断发现错误: Error CS0119'Program.Main(string[])是一个方法,在给定上下文中无效SSReplace d:\users\mtait\documents\visual studio 2015\Projects\SSReplace\SSReplace\Program.cs 谢谢你的帮助 标记 使用系统; 使用System.Collections.Gene
Error CS0119'Program.Main(string[])是一个方法,在给定上下文中无效SSReplace d:\users\mtait\documents\visual studio 2015\Projects\SSReplace\SSReplace\Program.cs
谢谢你的帮助
标记
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用System.IO;
使用System.Text.RegularExpressions;
命名空间替换
{
班级计划
{
静态void Main(字符串[]参数)
{
SSReplace.Program.Main.replaceinfles(“D:\\users\\mtait\\documents\\visualstudio 2015\\Projects\\SSReplace\\test\fic\u ISUK.txt”、“Begin”、“Begin2”);
}
///
///替换文件中的文本。
///
///文本文件的路径。
///要搜索的文本。
///替换搜索文本的文本。
公共void replaceInlines(字符串文件路径、字符串搜索文本、字符串替换文本)
{
StreamReader=新的StreamReader(文件路径);
字符串内容=reader.ReadToEnd();
reader.Close();
content=Regex.Replace(content、searchText、replaceText);
StreamWriter writer=新的StreamWriter(文件路径);
作者:写(内容);
writer.Close();
}
}
}
您需要将方法标记为静态:
public static void ReplaceInFiles
静态方法不能调用实例方法,因为没有创建程序的实例
要调用该方法,只需使用其名称ReplaceInFiles
,因为它位于同一命名空间和同一类中。无需在其前面使用完整的SSReplace.Program.Main
根据C#规范:
使用静态修饰符声明的方法是静态方法。静电计
方法不在特定实例上操作,只能直接
访问静态成员
未声明静态修饰符的方法是实例方法。一
实例方法对特定实例进行操作,并且可以访问这两个实例
静态和实例成员。实例方法所在的实例
可以按如下方式显式访问调用的。这是一个错误
在静态方法中引用此项
第一:C#中没有子程序,它被称为方法
第二:方法(与任何其他成员一样)在类中定义,因此属于该类的实例或类本身(static
member)。因此,写下以下内容:
var p = new Program(); // create a new instance of Program
p.ReplaceInFiles(myFile, "Begin", "Begin2"); // call the method on that instance
由于您已经在名称空间SSReplace
中,您还可以从代码中省略该部分
另一种方法是将方法设置为静态
。然后你可以这样称呼它:
Program.ReplaceInFiles(myFile, "Begin", "Begin2");
请注意,Main
-方法既没有名称空间也没有名称。但是,即使是程序
-部分也是可选的,这使得以下内容也有效:
ReplaceInFiles(myFile, "Begin", "Begin2");
您的命名空间混淆了:ReplaceInFiles
不在Main
中-只在程序中。ReplaceInFiles
就可以了。
ReplaceInFiles(myFile, "Begin", "Begin2");