C# 将数组传递给方法。

C# 将数组传递给方法。,c#,C#,我编写了一个简单的代码,向方法传递了一个数组,并返回了值,试图将其打印出来。不知何故,我没有得到所需的输出。请指出我错在哪里。另外,让代码简洁的技巧也是最受欢迎的 static void Main(string[] args) { string[] ar = new string[] { "hello", "world", "people" }; writeString(ar); Console.WriteLine(ar);

我编写了一个简单的代码,向方法传递了一个数组,并返回了值,试图将其打印出来。不知何故,我没有得到所需的输出。请指出我错在哪里。另外,让代码简洁的技巧也是最受欢迎的

static void Main(string[] args)
    {
        string[] ar = new string[] { "hello", "world", "people" };

        writeString(ar);
        Console.WriteLine(ar);

        Console.ReadLine();

    }

    static string writeString(string[] ar)
    {
        string a1 = " ";
        foreach (string a in ar)
        {
            a1 = a1 + a;
        }
        return a1;
    }

您没有打印由
writeString(string[]ar)
方法返回的字符串。而是打印输入字符串数组变量
ar
(在线
Console.WriteLine(ar)
)。那是你的问题。该
WriteLine
语句仅打印变量
ar
类型的完全限定名:
System.String[]


将行
Console.WriteLine(ar)
更改为
Console.WriteLine(writeString(ar))
以获得所需的输出。

我希望代码示例能够清楚地说明这一点。您必须从writeString函数中捕获返回值并输出该值

static void Main(string[] args)
{
    string[] ar = new string[] { "hello", "world", "people" };

    string output = writeString(ar);
    Console.WriteLine(output);

    Console.ReadLine();

}

static string writeString(string[] ar)
{
    string a1 = " ";
    foreach (string a in ar)
    {
        a1 = a1 + a;
    }
    return a1;
}
我编写了一个简单的代码,向方法传递了一个数组,并返回了值,试图将其打印出来。不知何故,我没有得到所需的输出

正如每个人都指出的那样,您没有收到返回值来打印它或对它做任何事情,因此,一个简单的代码修改就是首先接收结果/输出:

var result =  writeString(ar);
你期望的结果是什么

因为您打印的是数组,而不是返回值。数组在被调用函数的任何地方都没有修改,因此它保持完全相同。实现预期结果的最简单方法是:

Console.WriteLine(writeString(ar));

您可以使用简洁的代码
重构它,如下所示,而不需要其他方法

注意:我像您一样在数组项之前添加了空格。但是,如果您需要在数组的每个项目之间留出空间,则将
分隔符
行更改为
字符串分隔符=”

您可以使用
等任意字符更改下面的
分隔符

static void Main(string[] args)
{
    string[] ar = new string[] { "hello", "world", "people" };

    string delimiter = "";
    string output = " " + String.Join(delimiter, ar);
    Console.WriteLine(output);
    // You can do the same in one line as below by commenting above three lines
    // Console.WriteLine(" " + String.Join("", ar));

    Console.ReadLine();

}

您没有捕获写入字符串的
writeString
sreturn@LPK-虽然完全正确,但我认为您误解了OP的意图-显然
writeString
应该写入字符串-这意味着它应该写入控制台而不是返回结果…使用方法
writeString
控制台返回的值。WriteLine(RetryString(AR));确实考虑String。多个答案所建议的String。如果您试图将整数组转换成由分隔符分隔的单个字符串,尽管您的问题并不表明这是一种要求。函数进行一些调整。@PoomrokcThe3years In original question OP不是复制联接功能,因为联接将添加集合的所有元素,因为它创建了一个字符串,这里只在开始处追加空格,而不是在elements@MrinalKamboj如果我执行output=“”+String.Join怎么办(String.Empty,ar);?需要这样做吗?我不知道我已经有3年没有编写C了。@poomrokthe3年肯定会,事实上这就是他在当前方法中试图做的,然而,我的直觉是OP实际上可能需要一个连接,正如您之前所展示的:)@SaurabChooks我很高兴。你能接受这是正确的答案吗:-)原始功能不做加入的工作,伊芙,如果这是目的的话,因为它只是在开始时添加了空白,没有位置else@MrinalKamboj为什么不在这里加上同样的
“”+String.Join(定界符,ar)
?我想,他需要在数组项之间留出空间,并做错事。在这种情况下,
定界器
变为
字符串定界器=“”这是你对OP需要什么的假设,它没有在任何地方指定,所以我不确定,用例是什么,他只是问关于打印输出的问题,这无论如何都是错误的。请再次阅读他的问题。他要求提供
以及使代码简洁的提示,非常受欢迎
请添加一些代码以使其成为有效的答案,或者更好地使用注释部分以获得建议