根据关于该StringComparer.OrdinalIgnoreCase
属性的 MSDN 文档:
OrdinalIgnoreCase 属性实际上返回从StringComparer类派生的匿名类的实例。
这是我不熟悉的特性——具有继承的匿名类型吗?还是作者所说的“匿名类”只是指“来自 的内部类StringComparer
,对客户端代码不可见”?
根据关于该StringComparer.OrdinalIgnoreCase
属性的 MSDN 文档:
OrdinalIgnoreCase 属性实际上返回从StringComparer类派生的匿名类的实例。
这是我不熟悉的特性——具有继承的匿名类型吗?还是作者所说的“匿名类”只是指“来自 的内部类StringComparer
,对客户端代码不可见”?
在该术语的正常 C# 含义中,它不是匿名类型。
它只是一种内部类型,因此您不知道它的名称:您无法在代码中引用确切的类型。
如果查看 StringComparer 的源代码,可以看到 OrginalIgnoreCase 返回一个 OrdinalComparer 的实例,该实例是从 StringComparer 派生的。
我看不到任何关于此的“匿名”,只是它是内部的,因此您无法从框架外部看到它。
编译器可以创建从另一种类型继承的匿名类型——你不能。这太糟糕了,因为动态创建一个匿名类型,它要么继承自另一个类,要么实现一个接口,这将是一个很酷的特性。
匿名类型对我们来说是匿名的,而不是 CLR 和编译器。编译器使用了一个有趣的命名,其中包含 <> 在名称中,只有编译器可以做到这一点!也许查克诺里斯......