c# – 类型数量有限的字典
发布时间:2020-12-15 08:42:05 所属栏目:百科 来源:网络整理
导读:首先,请原谅我的问题相当有趣的名字.我不是母语人士,我花了10分钟时间用这几个字来表达我的想法. 我想要做的是在C#中创建一个字典,允许值为int,string或bool.我首先想到的是使用泛型,但据我所知,我只能将一种类型定义为可能的值类型,而不是“成为其中之一”.
首先,请原谅我的问题相当有趣的名字.我不是母语人士,我花了10分钟时间用这几个字来表达我的想法.
我想要做的是在C#中创建一个字典,允许值为int,string或bool.我首先想到的是使用泛型,但据我所知,我只能将一种类型定义为可能的值类型,而不是“成为其中之一”.使用对象也是可能的,但拳击似乎是一个非常性能杀手. 有没有办法做到这一点? 以下是我想到的一个例子: Dictionary<string,(string,int,bool)> foo = new Dictionary<string,bool)>(); foo.Add("key1","Hello,World!"); //Correct - Value is a string foo.Add("key2",37); //Correct - Value is an int foo.Add("key3",true); //Correct - Value is a boolean foo.Add("key4",new Foobar()); //Compiler error - Value is a Foobar 我的最终目标是为其他开发人员提供一个库.此功能应使他们能够在运行时定义“变量”并为其提供类型. 编辑:// Firefox’关于:配置页面有一些非常接近我想要实现的东西 解决方法
为什么不创建一个实现IDictionary的新类,并使用Dictionary作为私有变量.
然后,在add方法中,您可以提供自己的逻辑并相应地失败 示例代码 public class MyDic : IDictionary<object,object> { private Dictionary<object,object> privateDic= new Dictionary<object,object>(); public void Add(object key,object value) { if (value.GetType() == typeof(string)) throw new ArgumentException(); privateDic.Add(key,value); } //Rest of the interface follows } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |