列表和数组的问题
Problems with a list and array
我一直在研究一个可以根据化学式计算分子量的程序。
到目前为止它工作得很好,直到发生此错误。我想制作一个拆分化学式的数组(效果很好)。从这里我想进行一个方法调用,将数组发送到另一个方法。它用于从化学式中的元素计算分子量,并将其添加到新列表中。然后return列表到第一个方法。这是代码(仅显示 1 个元素或代码太大);
private void Textbox1_TextChanged(object sender, EventArgs e)
{
string input = Textbox1.Text;
string pattern = @"([A-Z][a-z]?\d*|[A-Z]?\d*)";
string[] substrings = Regex.Split(input, pattern);
MoleculeweightCalculator(substrings);
Textbox2.Text = Convert.ToString(MoleculeWeightList.Sum());
}
private static MoleculeweightCalculator(string[] substrings)
{
List<double> MoleculeWeightList = new List<double>();
foreach (string match in substrings)
{
if (match == "H")
{
MoleculeWeightList.Add(1.008);
}
}
return MoleculeWeightList;
}
问题是它不允许我将数组发送到另一个方法并再次return将列表发送到第一个方法。任何想法出了什么问题?或者如何解决?
您实际上并没有使用 return 值。 MoleculeWeightList
变量是局部 到那个函数 ,更具体地说,是那个 scope 并且不能在它之外使用。但是因为你 return
它,你可以这样做:
List<double> weightList = MoleculeweightCalculator(substrings);
Textbox2.Text = Convert.ToString(weightList.Sum());
这会将 return 值分配给 调用 方法中的局部变量,稍后您可以在该方法中使用它。
你的代码有很多错误,return
必须是小写的,你应该把它放在循环之外,然后缺少 return 类型。此外,您没有存储 returned 数据。
这至少应该编译:
private void Textbox1_TextChanged(object sender, EventArgs e){
string input = Textbox1.Text;
string pattern = @"([A-Z][a-z]?\d*|[A-Z]?\d*)";
string[] substrings = Regex.Split(input, pattern);
var result = MoleculeweightCalculator(substrings);
Textbox2.Text = Convert.ToString(result.Sum());
}
private static List<double> MoleculeweightCalculator(string[] substrings){
List<double> MoleculeWeightList = new List<double>();
foreach (string match in substrings){
if (match == "H")
MoleculeWeightList.Add(1.008);
}
return MoleculeWeightList;
}
我一直在研究一个可以根据化学式计算分子量的程序。 到目前为止它工作得很好,直到发生此错误。我想制作一个拆分化学式的数组(效果很好)。从这里我想进行一个方法调用,将数组发送到另一个方法。它用于从化学式中的元素计算分子量,并将其添加到新列表中。然后return列表到第一个方法。这是代码(仅显示 1 个元素或代码太大);
private void Textbox1_TextChanged(object sender, EventArgs e)
{
string input = Textbox1.Text;
string pattern = @"([A-Z][a-z]?\d*|[A-Z]?\d*)";
string[] substrings = Regex.Split(input, pattern);
MoleculeweightCalculator(substrings);
Textbox2.Text = Convert.ToString(MoleculeWeightList.Sum());
}
private static MoleculeweightCalculator(string[] substrings)
{
List<double> MoleculeWeightList = new List<double>();
foreach (string match in substrings)
{
if (match == "H")
{
MoleculeWeightList.Add(1.008);
}
}
return MoleculeWeightList;
}
问题是它不允许我将数组发送到另一个方法并再次return将列表发送到第一个方法。任何想法出了什么问题?或者如何解决?
您实际上并没有使用 return 值。 MoleculeWeightList
变量是局部 到那个函数 ,更具体地说,是那个 scope 并且不能在它之外使用。但是因为你 return
它,你可以这样做:
List<double> weightList = MoleculeweightCalculator(substrings);
Textbox2.Text = Convert.ToString(weightList.Sum());
这会将 return 值分配给 调用 方法中的局部变量,稍后您可以在该方法中使用它。
你的代码有很多错误,return
必须是小写的,你应该把它放在循环之外,然后缺少 return 类型。此外,您没有存储 returned 数据。
这至少应该编译:
private void Textbox1_TextChanged(object sender, EventArgs e){
string input = Textbox1.Text;
string pattern = @"([A-Z][a-z]?\d*|[A-Z]?\d*)";
string[] substrings = Regex.Split(input, pattern);
var result = MoleculeweightCalculator(substrings);
Textbox2.Text = Convert.ToString(result.Sum());
}
private static List<double> MoleculeweightCalculator(string[] substrings){
List<double> MoleculeWeightList = new List<double>();
foreach (string match in substrings){
if (match == "H")
MoleculeWeightList.Add(1.008);
}
return MoleculeWeightList;
}