首页
论坛
新员额
搜索论坛
什么's new
新员额
新的个人资料帖子
最新活动
成员
目前的访客
新的个人资料帖子
搜索个人资料帖子
vb.net社区
登录
登记
什么's new
搜索
搜索
仅搜索标题
经过:
新员额
搜索论坛
Menu
Log in
Register
安装应用程序
安装
首页
论坛
C#
C#综合讨论
GetEnumerator方法的实现
您正在使用过期的浏览器。它可能无法正确显示此或其他网站。
您应该升级或使用
替代浏览器
.
回复主题
信息
<Boldquote数据 - Quote ="jmcilhinney" data-source="post: 10073" data-attributes="member: 3"><p>第一个例子是界面的显式实现,而第二个例子不是。 显式实现是只能通过将类型的对象作为接口类型传递来访问。 例如,如果我只是将类添加到项目,请指定它实现了[icode] Ienumable [/ icode]界面,然后告诉IDE添加丢失的成员,这就是我得到的:</p><p>[CODE="csharp"] class1:ienumerable</p><p>{</p><p> 公共Ienureator GetEnumerator()</p><p> {</p><p> 抛出新的notimplementedException();</p><p> }</p><p>}</p><p>[/CODE]</p><p>基于该实施,我可以这样做:</p><p>[CODE="csharp"]</p><p>var c1 = new class1();</p><p>var e = c1.getenumerator();</p><p>[/CODE]</p><p>如果我点击[icode] get1umerator [/ icode]方法并选择才能显式实现选项,则代码更改为此:</p><p>[CODE="csharp"]</p><p>Class1:Ienumerable</p><p>{</p><p> Ienumerator Ienumable.GetEnumerator()</p><p> {</p><p> 抛出新的notimplementedException();</p><p> }</p><p>}</p><p>[/CODE]</p><p>以前使用[icode] c1 [/ icode]等级及其[icode] get1umerator [/ icode]方法不再编译。 编译器会告诉你:</p><p></p><p>为了访问接口成员的显式实现,必须将对象作为接口类型转换为界面类型,例如,</p><p>[CODE="csharp"]</p><p>var c1 = new class1();</p><p>var ce1 =(IEnumerable)C1;</p><p>var e = ce1.getenumerator();</p><p>[/CODE]</p><p>在[icode] IEnumerable [/ icode]和[icode] IEnumerable的情况下<T> [/ icode]接口,实现是否显式或不很少有所作为。 That'S由于通常使用[icode] foreach [/ icode]循环通常枚举此类对象,并且在内部,它将将对象投射为其中一个接口枚举。</p><p>[CODE="csharp"]</p><p>var c1 = new class1();</p><p></p><p>foreach(C1中的var项目)</p><p>{</p><p> // ...</p><p>}</p><p>[/CODE]</p><p>这些示例之间的其他差异似乎是第一个使用类型的类型实现[icode] iEnumerator [/ icode],而在第二个示例中使用inmentates中的类型声明的类型使用类型,它枚举。 要么有效,但嵌套类型只能用于枚举它被声明的类型的实例,而在理论上可以用于枚举多个其他类型的类型。</p></blockquote><p></p>
Insert quotes…
确认
发表回复
首页
论坛
C#
C#综合讨论
GetEnumerator方法的实现
本网站使用cookie来帮助个性化内容,量身定制您的体验并随时登录,如果您注册。
继续使用本网站,您正在同意我们使用cookie。
接受
了解更多…
最佳
底部