C# 是否实现两个接口?

C# 是否实现两个接口?,c#,oop,interface,C#,Oop,Interface,我正在编写一个同时返回DataTable和IEnumerable的类。除了返回类型之外,我不能定义完全相同的接口方法。所以,我希望我能创建这个接口,显然,它不会编译: interface IMyInterface { DataTable GetResults(); IEnumerable<string> GetResults(); } 那么,您将如何构造这两个函数、重命名它们、多个接口和参数 我只是好奇你们会怎么处理,泰…我会这样做:

我正在编写一个同时返回DataTable和IEnumerable的类。除了返回类型之外,我不能定义完全相同的接口方法。所以,我希望我能创建这个接口,显然,它不会编译:

interface IMyInterface
    {
        DataTable GetResults();
        IEnumerable<string> GetResults();
    }
那么,您将如何构造这两个函数、重命名它们、多个接口和参数

我只是好奇你们会怎么处理,泰…

我会这样做:

interface IMyInterface
{
    DataTable GetResultsAsTable();
    IEnumerable<string> GetResultsAsSequence();
}
显然,C不允许有两个方法,它们的签名在返回类型上不同。有趣的是,CLR允许这样做。考虑到这一点,我认为最好为这些方法提供通用前缀,并附加一个表示返回类型的后缀。

我会这样做:

interface IMyInterface
{
    DataTable GetResultsAsTable();
    IEnumerable<string> GetResultsAsSequence();
}
显然,C不允许有两个方法,它们的签名在返回类型上不同。有趣的是,CLR允许这样做。考虑到这一点,我认为最好给这些方法加上通用前缀,并附加一个表示返回类型的后缀。

你能这样做吗

interface IMyInterface    { 
   DataTable GetDTResults();        
   IEnumerable<string> GetIEResults();    
}
你能做到吗

interface IMyInterface    { 
   DataTable GetDTResults();        
   IEnumerable<string> GetIEResults();    
}

我将重命名第一个方法:

DataTable GetResultsDataTable();

我将重命名第一个方法:

DataTable GetResultsDataTable();

无论您是作为接口还是作为常规类执行此操作,这都不会编译,因为您有两个具有相同名称且具有相同无参数签名的方法


此外,使用两种完全不同的类型返回方法结果会产生非常糟糕的设计影响。

无论您是作为接口还是作为常规类执行此操作,都不会编译,因为您有两个名称相同且无参数签名相同的方法


此外,使用两种非常不同的类型返回方法结果会产生非常糟糕的设计影响。

您可以通过使用out参数来保持相同的方法名称:

interface IMyInterface
{
     void GetResults(out DataTable results);
     void GetResults(out IEnumerable<string> results);
}

您可以使用out参数保持相同的方法名称:

interface IMyInterface
{
     void GetResults(out DataTable results);
     void GetResults(out IEnumerable<string> results);
}

你真的需要他们有相同的名字吗?你真的需要他们有相同的名字吗?我想这就是我要做的。谢谢。我想这就是我要做的。谢谢