我一直在研究一种可以用化学式计算分子量的程序。 到目前为止它运行良好,直到发生此错误。我想制作一个分裂化学式的数组(它工作正常)。从这里我想进行一个方法调用,将数组发送到另一个方法。用于从化学式中的元素计算分子量,并将其添加到新列表中。然后将列表返回到第一个方法。这里是代码(仅显示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;
}
问题是它不允许我将数组发送到另一个方法并再次将列表返回到第一个方法。有什么想法有什么不对?或者如何解决?
答案 0 :(得分:2)
你的代码中有很多错误,return
必须是小写的,你应该把它放在循环之外,然后丢失返回类型。此外,您不会存储返回的数据。
这至少应该编译:
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;
}
答案 1 :(得分:1)
您实际上并未使用返回值。 MoleculeWeightList
变量是该函数的本地 ,更具体地说,是范围的变量,不能在其外部使用。但是因为你return
,你可以这样做:
List<double> weightList = MoleculeweightCalculator(substrings);
Textbox2.Text = Convert.ToString(weightList.Sum());
将返回值分配给调用方法中的局部变量,稍后您可以在方法中使用该方法。