c# 将多行字符串传递给函数和 return 数组
c# Pass a multi-line string to a function and return an array
我是 C# 编程的新手,我正在尝试使用良好的代码实践。我知道在下面的示例中使用全局变量是糟糕的编码,但我很难弄清楚这一点。所以,我试图用这个问题完成两件事。
首先,我想弄清楚如何将文本从多行文本框传递给一个函数,并让它 return 一个数组,然后我可以将它传递给另一个函数进行输出 ( display/printing/saving 到一个文件)。
其次,使我的代码更具可重用性(通过将全局变量移动到实际使用它们的函数中)。
我的问题是..如何将一个字符串传递给一个函数,然后 return 一个可以传递给另一个函数的数组?
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
}
}
}
您需要一个参数和 return 类型(字符串数组),您可能需要阅读有关 Passing Parameters and return statement 的更多信息以获取 returning 值。
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);
您可以 return 来自函数的数组:
public string[] f1(string s)
{
return s.Split('/');
}
您可以将 return 值传递给另一个函数:
public void f2(string[] p)
{
foreach(var item in p)
Console.WriteLine(item);
}
像这样使用:
public void main()
{
f2(f1("some/delimited/string");
}
为什么不
- 让 Load_Signal_Strength_Array 成为一个函数,它将本地字符串作为参数,return 重新处理的输出(这里作为数组,但 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();
}
我是 C# 编程的新手,我正在尝试使用良好的代码实践。我知道在下面的示例中使用全局变量是糟糕的编码,但我很难弄清楚这一点。所以,我试图用这个问题完成两件事。
首先,我想弄清楚如何将文本从多行文本框传递给一个函数,并让它 return 一个数组,然后我可以将它传递给另一个函数进行输出 ( display/printing/saving 到一个文件)。
其次,使我的代码更具可重用性(通过将全局变量移动到实际使用它们的函数中)。
我的问题是..如何将一个字符串传递给一个函数,然后 return 一个可以传递给另一个函数的数组?
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
}
}
}
您需要一个参数和 return 类型(字符串数组),您可能需要阅读有关 Passing Parameters and return statement 的更多信息以获取 returning 值。
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);
您可以 return 来自函数的数组:
public string[] f1(string s)
{
return s.Split('/');
}
您可以将 return 值传递给另一个函数:
public void f2(string[] p)
{
foreach(var item in p)
Console.WriteLine(item);
}
像这样使用:
public void main()
{
f2(f1("some/delimited/string");
}
为什么不
- 让 Load_Signal_Strength_Array 成为一个函数,它将本地字符串作为参数,return 重新处理的输出(这里作为数组,但 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();
}