当前位置:  开发笔记 > 编程语言 > 正文

.NET为什么string []可以作为IEnumerable <string>参数传递?

如何解决《.NET为什么string[]可以作为IEnumerable<string>参数传递?》经验,为你挑选了2个好方法。

这是有效的代码:

void func(IEnumerable strings){
    foreach(string s in strings){
        Console.WriteLine(s);
    }
}

string[] ss = new string[]{"asdf", "fdsa"};
func(ss);

我想知道的是,隐式转换是如何string[] -> IEnumerable工作的?



1> Daren Thomas..:

来自:msdn数组类

在.NET Framework 2.0版中,Array类实现了

IList,

ICollection,和

IEnumerable

通用接口.这些实现在运行时提供给数组,因此文档构建工具不可见.因此,通用接口不会出现在Array类的声明语法中,并且没有可通过将数组转换为通用接口类型(显式接口实现)来访问的接口成员的参考主题.将数组转换为其中一个接口时要注意的关键是添加,插入或删除元素的成员抛出NotSupportedException.



2> Anton Gogole..:

Arrayclass,这是一个非常奇怪的野兽,由编译器和JIT特别对待(更多关于Richter和Don Box的书,我猜),实现IEnumerable.

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有