如果方法返回一个接口,它意味着什么?

mas*_*ani 6 c# methods interface return-value

我看到很多方法将接口指定为返回值.我的想法是真的,这意味着:我的方法可以返回从该接口继承的每个类类型?如果没有,请给我一个很好的答案.

And*_*are 11

是的,您的方法可以返回任何实现该接口的类型.

这是一个例子:

using System;

class Foo
{
    public IComparable GetComparable()
    {
        // Either of these return statements
        // would be valid since both System.Int32
        return 4;
        // and System.String
        return "4";
        // implement System.IComparable
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 我想补充一点,试图嗅出实际类型和向下倾斜几乎总是一个坏主意. (2认同)
  • @Steven - 这通常是一个坏主意,但有些情况下,向下转换可能非常有益. (2认同)
  • 很好的例子:) (2认同)

Jef*_*dge 5

是的,这意味着您唯一知道的返回对象是它实现了接口.

实际上,调用代码甚至可以访问对象的实际类型.它可以是单独程序集中的私有类型.

实际上,该方法可以从一次调用返回到下一次调用的不同类型(如抽象工厂的情况).