为什么IEnumerable需要实现Add但没有其他方法?

Noa*_* B. -1 c#

我有这门课:

class Salaries : IEnumerable
{
    List<double> salaries = new List<double>();

    public Salaries()
    {
    }

    public void Insert(double salary)
    {
        salaries.Add(salary);
    }

    public IEnumerator GetEnumerator()
    {
        return salaries.GetEnumerator();
    }
}
Run Code Online (Sandbox Code Playgroud)

在程序中我尝试添加一些像这样的值:

Salaries mySalaries = new Salaries() { 1000, 2000, 3000 };
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

'薪水'不包含'添加'的定义,也没有扩展方法'添加'可以找到接受"薪金"类型的第一个参数(你是否缺少使用指令或汇编引用?)

为什么我会收到此错误?

我在哪里可以找到(使用VS)我需要实现的Add功能?

如果我查看List定义,我可以看到更多函数,那么编译器为什么要我实现Add呢?

(我知道如果我将类中的方法从Insert更改为Add它没关系.但问题是为什么只添加,它来自哪里?)

Den*_*s_E 5

因为您Add在使用集合初始值设定项时调用该方法.

Salaries mySalaries = new Salaries() { 1000, 2000, 3000 };
Run Code Online (Sandbox Code Playgroud)

由编译器翻译为:

Salaries mySalaries = new Salaries();
mySalaries.Add(1000);
mySalaries.Add(2000);
mySalaries.Add(3000);
Run Code Online (Sandbox Code Playgroud)

  • @NoamB.因为`List <int>`有一个Add方法.你的薪水课没有. (2认同)