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