Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么C#显式地为其内置类型实现父接口?_C#_.net - Fatal编程技术网

为什么C#显式地为其内置类型实现父接口?

为什么C#显式地为其内置类型实现父接口?,c#,.net,C#,.net,根据我的理解,给定一个接口接口父级,然后是一个从父级继承的接口,例如:接口子级:父级,子级将自动要求实现父级的成员,而无需指定这些成员 但是我注意到,对于所有内置类型,在实现接口时都指定了父类和子类。 例如: 公共类列表:IList、ICollection、IEnumerable。。。 离开上面内置的列表类型的示例,例如当IList已经实现时,它为什么要具体实现ICollection?既然ICollection已经实现了,为什么还要实现IEnumerable?等等 这是一般情况下应该采用的方式

根据我的理解,给定一个接口接口父级,然后是一个从父级继承的接口,例如:接口子级:父级子级将自动要求实现父级的成员,而无需指定这些成员

但是我注意到,对于所有内置类型,在实现接口时都指定了父类子类。 例如:

公共类列表:IList、ICollection、IEnumerable。。。
离开上面内置的列表类型的示例,例如当IList已经实现时,它为什么要具体实现ICollection?既然ICollection已经实现了,为什么还要实现IEnumerable?等等

这是一般情况下应该采用的方式还是对内置类型采用这种方式的具体原因?

显示了该类型实现的所有接口,但并不意味着源代码看起来是这样的。在表格中,签名仅为:

public class List<T> : IList<T>, System.Collections.IList, IReadOnlyList<T>) 
公共类列表:IList、System.Collections.IList、IReadOnlyList)
有一些但主要是非通用接口
IList
ICollection
,如果没有明确的努力,人们真的不应该使用这些接口

显示了该类型实现的所有接口,这并不意味着源代码看起来是这样的。在表格中,签名仅为:

public class List<T> : IList<T>, System.Collections.IList, IReadOnlyList<T>) 
公共类列表:IList、System.Collections.IList、IReadOnlyList)

有一些但主要是非通用接口
IList
ICollection
,如果没有明确的努力,人们真的不应该使用这些接口

您在哪里查看这些信息?请记住,由于各种原因,文档或反编译代码可能会显示原始源代码中未显示的接口。根据,
List:IList,System.Collections.IList,IReadOnlyList
是完整的声明。(另外,请记住,
List
不是C#的“内置类型”。它是一种.NET Framework类型)是的,为了方便起见,反编译将显示隐含/间接接口以及显式接口。无论如何,再次列出它们是多余的,不会有任何效果。这不是一开始就明确的实现。显示了所有实现的接口,这并不意味着源代码看起来是这样的。但这些主要是非通用接口。你完全正确,这是反编译器的结果。谢谢问题可以关闭。您在哪里查看此信息?请记住,由于各种原因,文档或反编译代码可能会显示原始源代码中未显示的接口。根据,
List:IList,System.Collections.IList,IReadOnlyList
是完整的声明。(另外,请记住,
List
不是C#的“内置类型”。它是一种.NET Framework类型)是的,为了方便起见,反编译将显示隐含/间接接口以及显式接口。无论如何,再次列出它们是多余的,不会有任何效果。这不是一开始就明确的实现。显示了所有实现的接口,这并不意味着源代码看起来是这样的。但这些主要是非通用接口。你完全正确,这是反编译器的结果。谢谢问题可以关闭。签名与.NET Core相同:签名与.NET Core相同: