所以我有一个内部类:
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 <>中的方法。如何摆脱这个错误?
答案 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);
}
}