C#如何将多行字符串传递给函数并返回数组

3
我是一名新手C#程序员,试图使用良好的编码实践。我知道在下面的示例中使用全局变量是不好的编码实践,但我很难解决这个问题。因此,我尝试用这个问题实现两个目标。
首先,我正在尝试弄清楚如何将多行文本框中的文本传递给函数,并返回一个数组,然后将其传递给另一个函数以进行输出(显示/打印/保存到文件)。
其次,通过将全局变量移动到实际使用它们的函数内部,使我的代码更可重用。
我的问题是..如何将字符串传递给函数并返回一个数组,然后可以将其传递给另一个函数?
public partial class Form1 : Form
{

    string[] SignalStrengthInputArray450;
    string[] SignalStrengthOutputVar450 = new string[7];


    // cut out other functions

    private void Submit_450_Click(object sender, EventArgs e)
    {
        // ensure that input textbox is not null then call Load function
        // SignalStrenthInput_450 is the object name of a multi-line textbox
        if (!String.IsNullOrWhiteSpace(SignalStrengthInput_450.Text))
        {
            Load_Signal_Strength_Array();
        }
        else
        {
            // do something different
        }

        // additonal code for other textboxes
    }

    private void Load_Signal_Strength_Array()
    {
        // Processing Signal Strength textbox 
        SignalStrengthInputArray450 = SignalStrengthInput_450.Text.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
        foreach (string a in SignalStrengthInputArray450)
        {
            // loads some stuff into the SignalStrengthOutputArray450 array
        }
    }

}

那么这里的确切障碍是什么? - Dhrumil
如果您有问题,请明确说明。否则,我认为这可能更适合 CodeReview - Yuval Itzchakov
你可以直接从函数返回数组,并将返回值传递给其他函数。 - Giorgi Nakeuri
3个回答

2

您需要一个参数和返回类型(字符串数组),您可能需要阅读有关传递参数返回语句以返回值的更多信息。

private string[] Load_Signal_Strength_Array(string signalStrengthInput_450)
{
   string[] SignalStrengthInputArray450 = SignalStrengthInput_450.Text.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
   foreach (string a in SignalStrengthInputArray450)
   {
      // loads some stuff into the SignalStrengthOutputArray450 array
   }
   return SignalStrengthInputArray450; 
}   

方法调用将会像这样

string[] signalStrengthArray = Load_Signal_Strength_Array(SignalStrengthInput_450.Text);

那么,使用这个函数后,为了使用返回的数组,我的函数调用会变成类似这样的形式: string [] OutputArray = Load_Signal_Strength_Array(); 是这样吗? - Tim Jones
感谢您的方法调用更新。在您添加之前,我已经发表了评论。这太完美了,正是我所需要的。谢谢! - Tim Jones

1

你可以从函数中返回数组:

public string[] f1(string s)
{
    return s.Split('/');
}

你可以将返回值传递给另一个函数:

public void f2(string[] p)
{
    foreach(var item in p)
       Console.WriteLine(item);
}

使用方法如下:
public void main()
{
   f2(f1("some/delimited/string");
}

0

为什么不

  • 将Load_Signal_Strength_Array作为一个函数,它以本地字符串作为参数并返回重新处理的输出(这里是数组,但IList可能更好)
  • 使用简单的Load_Signal_Strength_Array(SignalStrengthInput_450.Text)调用此函数

示例:

private string[] Load_Signal_Strength_Array(string text)
{
    // Processing text
    var inputs = text.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
    var outputs = new List<string>();
    foreach (string a in inputs)
    {
        // loads some stuff into the output array
        // example:
        if (!string.IsNullOrEmpty(a)) outputs.add(a);
    }
    return outputs.ToArray();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接