为什么不能在浮动列表上调用.Add()?

时间:2018-07-09 14:32:04

标签: c# .net

所以我有一个内部类:

public class RegressEquation 
{
    public List<float> coefficients = new List<float>();
    float averageDiff = 0;

    public  RegressEquation(float[] coefficients, float finalAverageDiff)
    {
        averageDiff = finalAverageDiff;

        foreach (float f in coefficients)
        {
            coefficients.Add(f);
        }
    }
}

但是当我调用系数.Add(f);时出现编译器错误。表示“ System.Array不包含Add ...的定义”。文档说Add()是List <>中的方法。如何摆脱这个错误?

2 个答案:

答案 0 :(得分:7)

因为您有一个同名的方法参数,并且名称解析规定了局部变量统治类级变量。

更改任何一个变量的名称,或使用this来指定要解决的类级变量:

foreach (float f in coefficients)
{
    this.coefficients.Add(f);
}

答案 1 :(得分:2)

一些命名约定可以为您解决这个问题。我将规则与类级别变量一起使用,以将它们与局部变量和参数区分开来,而不必使用this。请考虑以下内容:

public class RegressEquation
{
    public List<float> Coefficients; // start this with a capital
    // … more code here.

    public  RegressEquation(float[] coefficients, float finalAverageDiff)
    {
        AverageDiff = finalAverageDiff;
        Coefficients = new List<float>(coefficients);
    }
}