Mar*_*son 7 c# generics multiple-inheritance
我有一个界面
interface IInterface<E>{
E Foo();
}
Run Code Online (Sandbox Code Playgroud)
然后我创建一个这样的类
class Bar : IInterface<String>, IInterface<Int32> {
}
Run Code Online (Sandbox Code Playgroud)
这实际上工作得很好,除了我需要使用接口显式定义两个函数之一,如下所示:
class Bar : IInterface<String>, IInterface<Int32> {
String Foo();
Int32 IInterface<Int32>.Foo();
}
Run Code Online (Sandbox Code Playgroud)
缺点是我每次想要到达具有显式接口的Foo()时都必须进行转换.
处理此问题时的最佳做法是什么?
我正在做一个非常依赖于性能的应用程序,所以我真的不想每秒进行一百万个强制转换.这是JIT会弄明白的东西,还是应该存储一个实例的版本?
我没有尝试过这个特定的代码,但它看起来非常接近我正在做的事情.
Pao*_*sco 12
您不能按返回类型覆盖,但如果您想避免强制转换,则可以将返回类型转换为out参数:
interface IInterface<E> {
void Foo(out E result);
}
class Bar : IInterface<string>, IInterface<int> {
public void Foo(out string result) {
result = "x";
}
public void Foo(out int result) {
result = 0;
}
}
static void Main(string[] args) {
Bar b = new Bar();
int i;
b.Foo(out i);
string s;
b.Foo(out s);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1438 次 |
| 最近记录: |