- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我第一次在这里发布问题,所以在此先感谢任何能帮助我(也许还有其他人)的人。
今天,我一直对 C# 4 中的协变和逆变感到困惑,但我真的看不到任何我想做的事情的可能性。注意:所有这些都不是 来解决特定问题,但我想知道是否有任何合法的方法(C# 4 中全新的协方差/反方差)来解决它。所以,不要发疯...
这里是示例代码:
public interface IBase<in T>
{
T GetValue();
...
}
public class Readable<T> : IBase<T>
{
public T GetValue() {/* */}
...
}
public class Writeable<T> : IBase<T>
{
public T GetValue() {/* */}
public void SetValue(T value) {/* */}
...
}
public class Program
{
private List<IBase<object>> _collection = new List<IBase<object>>();
public static void Main()
{
var p = new Program();
p._collection.Add(new Readable<bool>()); //not allowed
}
}
该集合应该能够容纳任何 IBase 衍生物,即任何 T 的衍生物。当然,我可能会使用非通用集合或列表,然后游戏就结束了。另一个想法是有一个更通用的接口(interface) IBaseCore,然后 IBase 继承自。我的问题是:如果没有这些技巧,我可以实现拥有 IBase 的集合并添加任何 IBase 的项目吗?
谢谢大家。
最佳答案
编辑:首先,IBase<T>
的方差是错误的.应该是out T
(协变)而不是 in T
(逆变)。
这里的问题很简单,泛型协变和逆变不适用于值类型作为类型参数。所以你可以添加 Readable<string>
, 但不是 Readable<bool>
.
一个选择是拥有一个非通用的基础接口(interface):
public interface IBase
{
object GetValueAsObject();
}
public interface IBase<out T> : IBase
{
T GetValue();
...
}
然后你可以有一个List<IBase>
.
关于.net - 有机会合法投吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5105883/
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-topic
我有 2 个不同的 View 设置 View 和默认 View 我无法将 uiswitch 值传递给默认 View 开关在 NSUserDefaults 中存储位置 设置 View .m - (voi
我猜大多数内置的随机生成器会返回类似这样的内容: [0.0, 1.0) 所以如果我想要 50% 的机会,我会使用这样的东西: if random() < .5 或类似的东西: if random()
有没有办法使用合作伙伴 WSDL 创建机会?我在网上看到的唯一示例是使用 Enterprise WSDL 创建,但它们特定于组织。 在我提到的其他链接中.. http://www.salesforce
背景 我正在使用支持向量机对不平衡类进行二元分类(即我的训练集中正负标签的比例约为 100)。我想优化以下参数:m(我从训练数据中采样的正标签与负标签的比率)、w(类权重)和 SVM 参数 C。 问题
我想根据百分比随机生成 YES 或 NO 所以我想“滚动”并有 25% 的机会击中 YES,75% 的机会击中 NO 是否希望有人能为我指出正确的方向,以最好的方式做到这一点,也许是一些文章或其他什么
我是一名优秀的程序员,十分优秀!