C# 列表和数组的问题
我一直在做一个程序,可以根据化学式计算分子量。 到目前为止,它工作得很好,直到出现这个错误。我想制作一个数组来拆分化学式(它工作得很好)。从这里我想进行一个方法调用,将数组发送到另一个方法。用于根据化学式中的元素计算分子量,并将其添加到新列表中。然后将列表返回到第一个方法。下面是代码(仅显示1个元素或代码太大)C# 列表和数组的问题,c#,arrays,return,method-call,C#,Arrays,Return,Method Call,我一直在做一个程序,可以根据化学式计算分子量。 到目前为止,它工作得很好,直到出现这个错误。我想制作一个数组来拆分化学式(它工作得很好)。从这里我想进行一个方法调用,将数组发送到另一个方法。用于根据化学式中的元素计算分子量,并将其添加到新列表中。然后将列表返回到第一个方法。下面是代码(仅显示1个元素或代码太大) private void Textbox1\u TextChanged(对象发送者,事件参数e) { 字符串输入=Textbox1.Text; 字符串模式=@“([A-Z][A-Z]?\
private void Textbox1\u TextChanged(对象发送者,事件参数e)
{
字符串输入=Textbox1.Text;
字符串模式=@“([A-Z][A-Z]?\d*|[A-Z]?\d*)”;
string[]substring=Regex.Split(输入,模式);
分子量计算器(子串);
Textbox2.Text=Convert.ToString(molecleWeightList.Sum());
}
专用静态权重计算器(字符串[]子字符串)
{
List MoleculeWeightList=新列表();
foreach(子字符串中的字符串匹配)
{
如果(匹配==“H”)
{
分子重量表。添加(1.008);
}
}
返回权重表;
}
问题是它不允许我将数组发送到另一个方法,然后将列表再次返回到第一个方法。你知道怎么了吗?或者如何解决它?您实际上没有使用返回值。
molecleweightlist
变量是该函数的局部变量,更具体地说,是该范围的局部变量,不能在其外部使用。但是,由于您返回它,因此可以执行以下操作:
List<double> weightList = MoleculeweightCalculator(substrings);
Textbox2.Text = Convert.ToString(weightList.Sum());
列表权重列表=分子权重计算器(子字符串);
Textbox2.Text=Convert.ToString(weightList.Sum());
将返回值赋给调用方法中的局部变量,然后可以在该方法中稍后使用。代码中有许多错误,返回必须是小写的,并且应该将其置于循环之外,然后返回类型丢失。此外,您没有存储返回的数据
这至少应编译:
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;
}
private void Textbox1\u TextChanged(对象发送者,事件参数e){
字符串输入=Textbox1.Text;
字符串模式=@“([A-Z][A-Z]?\d*|[A-Z]?\d*)”;
string[]substring=Regex.Split(输入,模式);
var结果=分子量计算器(子字符串);
Textbox2.Text=Convert.ToString(result.Sum());
}
私有静态列表权重计算器(字符串[]子字符串){
List MoleculeWeightList=新列表();
foreach(子字符串中的字符串匹配){
如果(匹配==“H”)
分子重量表。添加(1.008);
}
返回权重表;
}
return
是小写的,molecleWeightCalculator
在方法签名中需要一个返回类型,在这种情况下:List
加上您可能希望将return语句移到foreach循环之外。哦,是的,return在foreach之外。只是在这里写错了:)
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;
}