Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 列表和数组的问题_C#_Arrays_Return_Method Call - Fatal编程技术网

C# 列表和数组的问题

C# 列表和数组的问题,c#,arrays,return,method-call,C#,Arrays,Return,Method Call,我一直在做一个程序,可以根据化学式计算分子量。 到目前为止,它工作得很好,直到出现这个错误。我想制作一个数组来拆分化学式(它工作得很好)。从这里我想进行一个方法调用,将数组发送到另一个方法。用于根据化学式中的元素计算分子量,并将其添加到新列表中。然后将列表返回到第一个方法。下面是代码(仅显示1个元素或代码太大) private void Textbox1\u TextChanged(对象发送者,事件参数e) { 字符串输入=Textbox1.Text; 字符串模式=@“([A-Z][A-Z]?\

我一直在做一个程序,可以根据化学式计算分子量。 到目前为止,它工作得很好,直到出现这个错误。我想制作一个数组来拆分化学式(它工作得很好)。从这里我想进行一个方法调用,将数组发送到另一个方法。用于根据化学式中的元素计算分子量,并将其添加到新列表中。然后将列表返回到第一个方法。下面是代码(仅显示1个元素或代码太大)

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;
}