作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
给定以下类型和片段:
interface IFoo<out T> {
T doThing();
}
class Bar : IFoo<int> {
int doThing() => 0;
}
var list = new List<IFoo<object>> {
new Bar() //fails to compile
};
我知道无法添加 Bar
到 List<IFoo<object>>
,因为 Bar
的 T
是一个值类型。
鉴于我需要IFoo
类型安全,我如何更改 Bar
或集合,以便可以同时存储 IFoo<T>
对于某些值和引用类型?
最佳答案
基本上我在这里只看到一个选项:
public interface IFoo<out T>:IFoo
{
T doThing();
}
public interface IFoo
{
object doThing();
}
public class Bar : IFoo<int>
{
public int doThing(){return 0;}
object IFoo.doThing()
{
return doThing();
}
}
var list = new List<IFoo>
{
new Bar()
};
关于c# - 将 B 添加到 List<A<object>>,其中 B 以值类型实现 A,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36229893/
我是一名优秀的程序员,十分优秀!