匿名类型(类 特征)

Anonymous types (classes features)

我有一个很大的困难。我要回答的问题是:MyClass 应该具备哪些功能才能正确?

var myVariable = new MyClass { 25 };

我从周五开始就试图找到答案,但我还没有结果。你有什么想法吗?

它应该有一个 Add(int) 方法。这是一个集合初始化器。 List是这样吗

var myVariable = new List<int> { 25 };

要符合该语法,class 需要满足两点:

  • 它需要实现 IEnumerable(或其他一些暗示 IEnumerable 的接口 - 它也可以从实现 IEnumerable 的基础 class 继承)
  • 它需要实现一个能够接收int值的Add(...)方法

以下任何一项 class 声明都可以:

public class MyClass1 : IEnumerable
{
    public void Add(int i) { }
    public IEnumerator GetEnumerator() => null;
}

public class MyClass2 : IEnumerable
{
    public void Add(double i) { }
    public IEnumerator GetEnumerator() => null;
}

public class MyClass3 : IEnumerable
{
    public void Add(object i) { }
    public IEnumerator GetEnumerator() => null;
}

编译器可以自动将 int 值转换为更多类型,以上只是 3 个不同的示例。