gpt4 book ai didi

c# - 字典的多态性

转载 作者:太空宇宙 更新时间:2023-11-03 18:49:21 24 4
gpt4 key购买 nike

我有一个基类型,从中继承了 3 个不同的对象。让我们将基础对象称为 B,并将继承的对象称为 X、Y 和 Z。现在我有一个以 int 作为键并分别以 X、Y、Z 作为值的字典。

我有一个控件,需要在一个且仅一个特定词典中进行查找以绘制自身,但为了能够使用我的所有三个词典,我尝试指定该控件应采用等于的参数Dictionary<int, B> .但这没有用。

那么我的选择是什么?我希望我的控件能够处理 <int, B> 形式的所有词典.

最佳答案

像这样创建一个通用方法:

public void DoSomething<T>(IDictionary<int, T> dictionary) where T : B

或者类似地使控件本身通用(这会给您的设计师带来问题,但是......)

public class MyControl<T> where T : B
{
private IDictionary<int, T> dictionary;
...
}

由于泛型不变性,您需要这样做。即使在 C# 4(支持一些变体)中,这也是不变的:字典使用输入输出的值。

假设您可以从 Dictionary<int, X> 转换至 Dictionary<int, B> .然后你就可以写:

dictionary[0] = new B();

... 这显然对字典无效,因为它不是 X。 ...

关于c# - 字典的多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1449551/

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