栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

C#相当于Java的通配符

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C#相当于Java的通配符

C#中没有Java通配符。在Java中,类型类型是

Class<T>
其中
T
的类本身。C#中的等效项是类型
Type
,它 不是泛型的
。因此,您似乎最好的办法就是拥有一个
Dictionary<Type,int>
,如果将其封装在一个类中,则可以限制您在代码中放入字典的内容(因此,这只是运行时检查):

private Dictionary<Type, int> myDictionary = new Dictionary<Type, int>();public void Add(Type type, int number) {   if (!typeof(baseClass).IsAssignableFrom(type)) throw new Exception();   myDictionary.Add(type, number);}

您甚至可以

IDictionary
使用该逻辑来实现自己的逻辑。

更新

我可以想到的另一个 运行时 技巧是为您的类型使用包装器类:

public class TypeWrapper<T>{    public Type Type { get; private set; }    public TypeWrapper(Type t)    {        if (!typeof(T).IsAssignableFrom(t)) throw new Exception();        Type = t;    }    public static implicit operator TypeWrapper<T>(Type t) {        return new TypeWrapper<T>(t);    }}

(也可以执行

Equals
GetHashCode
,仅委托给
Type
。)

然后您的字典变成:

var d = new Dictionary<TypeWrapper<baseClass>, int>();d.Add(typeof(baseClass), 2);d.Add(typeof(Child), 3);


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/570943.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号