![]() |
1
7
如果两个类型派生自相同的基或使用相同的接口,并且没有其他类使用基和/或接口,那么generic仍然是一个选项。
除此之外,两个超负荷是解决问题的方法。 注意:如果您有.NET 4,您可以使它成为运行时的东西,并使该方法成为动态的。
在这种情况下,您向它扔的任何东西都将编译,但如果
就个人而言,如果我不能修改类型以使用公共接口,那么我将使用重载并获得编译时安全性。 |
![]() |
2
8
奇怪的是,到目前为止,还没有人发布我认为是显而易见的选择: 以名称作为比较的参数 . 使 呼叫者 从对象中获取name属性。如果需要使用的所有方法都是名称,那么为什么要传入对象的其余部分? 如果你需要抽象出“我可以从这件事中得到一个名字”的概念,那么就这样做: 例子:
现在你可以说:
等等。 |
![]() |
3
4
好吧,我在第一个回答中完全错了你的问题。这里有一个更好的。)
超载是最好的选择。因为比较结果只取决于
编辑: 由于您有多个项目,您可以做两件事:
但那会变得有点难看。另一种方法是提供一个投影来提取值:
然后你的比较看起来像:
|
![]() |
4
1
如果可以 只有 与2个类型一起使用,然后进行2个重载。 |
![]() |
5
1
重载方法将是使它只需要两个特定类型的好方法。为了避免重复代码,可以在场景后面使用泛型:
|
![]() |
6
0
也许不是最好的解决方案,但我想到的是: 你的方法如下:
然后你可以用一行来比较两种方法。
您的mainCompare将根据使用的类型稍微改变一点。 |
![]() |
7
0
这可能是一个不切实际的解决方案,但是您可以为这两个类制作适配器,并让它们实现一个公共接口:
然后,您可以基本上实现@Anthony Pegram(+1)所拥有的:
|
|
Deconimus · C++模板方法重载和多态性类访问 7 年前 |
![]() |
Vincent · 一种类型特征,标识哪个类提供重载解析选择的函数 7 年前 |
![]() |
Lingxi · C中的默认参数vs重载++ 7 年前 |
![]() |
Slime recipe · 多目标框架导致CS1503 7 年前 |
![]() |
Dick Lucas Carl · 函数重载的替代方法 7 年前 |
![]() |
Ali · Typescript rest参数具有两种可能的数组类型 7 年前 |