c#接口实现 – 为什么这不构建?

c#接口实现 – 为什么这不构建?,第1张

概述很抱歉,如果之前已经询问过,但谷歌几乎不可能.我认为int数组实现IEnumerable,因此Thing应该能够实现IThing.怎么没有? public interface IThing{ IEnumerable<int> Collection { get; }}public class Thing : IThing{ public int[] Collection { 很抱歉,如果之前已经询问过,但谷歌几乎不可能.我认为int数组实现IEnumerable,因此Thing应该能够实现IThing.怎么没有?

public interface IThing{    IEnumerable<int> Collection { get; }}public class Thing : IThing{    public int[] Collection { get; set; }}

注意

public class Thing : IThing{    public int[] Array { get; set; }    public IEnumerable<int> Collection    {         get         {              return this.Array;         }    }}

很好.

解决方法 接口实现必须完全实现接口.这可以防止您返回实现该接口的类型作为成员.

如果您希望这样做,一个选项是明确实现接口:

public interface IThing{    IEnumerable<int> Collection { get; }}public class Thing : IThing{    public int[] Collection { get; set; }    IEnumerable<int> IThing.Collection { get { return this.Collection; } }}

这允许类的公共API使用具体类型,但接口实现要正确实现.

例如,有了上述内容,您可以编写:

internal class Test{    private static voID Main(string[] args)    {        IThing thing = new Thing { Collection = new[] { 3,4,5 } };        foreach (var i in thing.Collection)        {            Console.Writeline(i);        }        Console.ReadKey();    }}
总结

以上是内存溢出为你收集整理的c#接口实现 – 为什么这不构建?全部内容,希望文章能够帮你解决c#接口实现 – 为什么这不构建?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1226133.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存