我编写了一个将三个字符串连接为一个的函数,但我只是在学习 C#,所以它没有成功。请告诉我为什么我的代码不起作用:
namespace ConsoleApplicationTest1
{
class Program
{
string Сoncatenation(string str1, string str2, string str3)
{
str1 += str2;
str1 += str3;
return str1;
}
static void Main(string[] args)
{
string st1 = "Vova Na";
string st2 = "ik bb";
string st3 = "gdsadsds";
string correct = Сoncatenation(st1, st2, st3);
System.Console.WriteLine(correct);
}
}
}
您的函数按您的计划工作,问题不同:为了调用一个实例(即非静态)方法,您必须指定这个实例。因为你的函数在一个类
Program中,你必须有一个类的实例来调用它Program:但是,很可能,您不想调用这样的函数,但实际上,如果它本质上不会以任何方式影响或使用任何东西,为什么它需要某个类的实例?在这种情况下,你应该让你的函数static:
然后您的其余代码将无需更改即可工作。
好吧,在你习惯了编写自己的函数等之后,你应该学习标准库,因为里面已经有了很多东西,特别是连接多个字符串的函数(
public static string Concat (params string[] values))。可以在 Albahari 的书中找到对标准库的精彩介绍(请参阅此处),并且不要忘记 MSDN。
您可以使用params 关键字。
如果 C# 开箱即用,为什么要重新发明轮子?
有一个函数
String.Concat最多可以接受 4 个元素作为输入,并且由于 c 重载,IEnumerable它可以接受预先打包到集合中的任意数量的字符串。框架是一个包含现成块的框架,您可以使用这些块来节省您自己的实现时间。
为什么你需要做一些已经以不同方式实现的事情,应该有一个具体的理由。
如果您仍然想了解真相,例如,出于教育目的,为什么您的代码不起作用,那么问题在于您正在创建一个不能轻易调用的实例方法。因此,在此之前,您必须创建一个类型为
Programthrough的对象new,并在此变量上调用您的函数。还有另一种选择:如果您使用修饰符声明它
static,那么您的代码将无需创建实例即可运行不变。