匿名类型(类 特征)
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 个不同的示例。
我有一个很大的困难。我要回答的问题是: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 个不同的示例。