gpt4 book ai didi

c# - 在同一个类上多次使用通用接口(interface)

转载 作者:太空狗 更新时间:2023-10-29 20:05:35 24 4
gpt4 key购买 nike

我有一个接口(interface)

interface IInterface<E>{
E Foo();
}

然后我创建一个这样的类

class Bar : IInterface<String>, IInterface<Int32> {
}

这实际上效果很好,除了我需要使用显式接口(interface)定义两个函数之一,如下所示:

class Bar : IInterface<String>, IInterface<Int32> {
String Foo();
Int32 IInterface<Int32>.Foo();
}

缺点是每次我想访问具有显式接口(interface)的 Foo() 时都必须进行转换。

处理此问题的最佳做法是什么?

我正在做一个非常依赖性能的应用程序,所以我真的不想每秒进行一百万次转换。这是 JIT 会解决的问题,还是我应该自己存储实例的转换版本?

我没有尝试过这个特定的代码,但它看起来非常接近我正在做的事情。

最佳答案

你不能通过返回类型覆盖,但是如果你想避免转换你可以把你的返回类型变成一个输出参数:

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);
}

关于c# - 在同一个类上多次使用通用接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11430976/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com