社区
C#
帖子详情
Dictionary泛型如何做参数使用
zhujiawei7
2009-12-26 01:53:22
我写了一个函数,需要一个Dictionary<K,V>的参数。
我参数写成Dictionary<Object,Object>类型,
但是这样无法接受Dictionary<string,string>等其他类型,只能接Object的。
重载写好像傻了点。。。
如何让参数Dictionary<> 能接受任何类型的Dictionary<>呢?
...全文
759
19
打赏
收藏
Dictionary泛型如何做参数使用
我写了一个函数,需要一个Dictionary的参数。 我参数写成Dictionary类型, 但是这样无法接受Dictionary等其他类型,只能接Object的。 重载写好像傻了点。。。 如何让参数Dictionary 能接受任何类型的Dictionary呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zhujiawei7
2010-01-04
打赏
举报
回复
public static bool CheckDictionary(System.Collections.IDictionary dictionary)
就这样定义
nyq1999
2009-12-31
打赏
举报
回复
[Quote=引用 1 楼 vrhero 的回复:]
将参数类型改成System.Collections.IDictionary...
[/Quote]
这个怎么解决的?我怎么看不出来,IDictionary<>接口能把键值类型都抽象出来?泛型参数Dictionary<>也有..
zhujiawei7
2009-12-28
打赏
举报
回复
[Quote=引用 8 楼 vrhero 的回复:]
走了一年的路还看不懂我在1楼的回答?那可以考虑改行了...
[/Quote]
不好意思,我已经用你的方法实现了,忘回帖了。
不过我被你伤到了
另外说一个,泛型定义成Object类型,是做不到我要求的事
gqqnb
2009-12-26
打赏
举报
回复
泛型约束呢?
如果你的几个具体类型实现某个接口或继承于某个父类,就用where限定一下
人到中年琐事多
2009-12-26
打赏
举报
回复
[Quote=引用楼主 zhujiawei7 的回复:]
我写了一个函数,需要一个Dictionary <K,V>的参数。
我参数写成Dictionary <Object,Object>类型,
但是这样无法接受Dictionary <string,string>等其他类型,只能接Object的。
重载写好像傻了点。。。
如何让参数Dictionary <> 能接受任何类型的Dictionary <>呢?
[/Quote]
这样可行,但是对方法体的要求就太严了
楼主既然要用object类型,那说明没有特定的针对某一类型的算法,那就用个objcet吧
如果有针对特定类型的算法,就都分开来吧
你把特定类型,和字符串类型混在一个集合里,还能有什么针对特定类型的算法呢?
可能只是要个仓库?
ProjectDD
2009-12-26
打赏
举报
回复
作参数的方法加范型可以不
void X<n,v>(Dictionary<n,v> data);
king4323210
2009-12-26
打赏
举报
回复
用 OBJECT类型很好啊!
可以转换成任何类型!!
这样很灵活!
tkscascor
2009-12-26
打赏
举报
回复
[Quote=引用 8 楼 vrhero 的回复:]
走了一年的路还看不懂我在1楼的回答?那可以考虑改行了...
[/Quote]
....
nyq1999
2009-12-26
打赏
举报
回复
protected void Page_Load(object sender, EventArgs e)
{
Dictionary<string, string> dic1 = new Dictionary<string, string>();
dic1.Add("一", "一");
Dictionary<int, int> dic2 = new Dictionary<int, int>();
dic2.Add(1, 1);
ResponseDic<string, string>(dic1, "一");
ResponseDic<int, int>(dic2, 1);
}
protected void ResponseDic<T, U>(Dictionary<T, U> Dic,T t)
{
Response.Write(Dic[t]);
}
不过我相信没几个人这么用泛型化参数的.....虽然能这么用....
nyq1999
2009-12-26
打赏
举报
回复
泛型化参数
sky_rv
2009-12-26
打赏
举报
回复
Dictionary <K,V> Dict=new Dictionary<K,V>;
这样就行了啊,等你用的时候在定义数据类型,但是本意上Dict只能用一种数据类型,因为这是泛型本身定的原因,
但是这样写你就可以在你用到了的时候直接指定数据类型不用声明的时候就指定数据类型来影响你的后续编程和使用,
vrhero
2009-12-26
打赏
举报
回复
走了一年的路还看不懂我在1楼的回答?那可以考虑改行了...
zhujiawei7
2009-12-26
打赏
举报
回复
承认没你强大,但也走了一年的路了
以专业开发人员为伍
2009-12-26
打赏
举报
回复
用到什么具体类型就设计什么具体类型,还没有走过几天路呢就想学超人?
zhujiawei7
2009-12-26
打赏
举报
回复
因为我有可能传进来的是Dictionary <string,string> 或者Dictionary <string,Model>等等类型的。
我就是希望这个函数都能被使用
haosa
2009-12-26
打赏
举报
回复
不知道LZ问什么要用Object?
Dictionary <K,V>
K:用string 类型;
V:可以用一个实体对象做参数,实体类中可以定义多种类型参数;
mngzilin
2009-12-26
打赏
举报
回复
支持string
tkscascor
2009-12-26
打赏
举报
回复
本来只能赋值给指定类型的啊
比如我有
class c1
{}
class c2:c1
{}
list<c1> c1=new list<c1>();
c1.add(new c1());
c1.add(new c2());
只能添加该类跟子类啊~
vrhero
2009-12-26
打赏
举报
回复
将参数类型改成System.Collections.IDictionary...
2013-01-30
泛型
、反射.pdf
一、
泛型
为什么要有
泛型
集合(List
,
Dictionary
,LinkedList
)? 1.为了避免装箱拆箱; 2.复用集合类里的 代码(算法) List
List
1.概念 1.1官方:是一种特殊的【算法重用】机制。允许程序员在代码中将 变量或
参数
的类型 先用【类型占位符】来代替,等到运行的时候再根据传入的【类】来替换 通俗:类也可以带
参数
了!但是这个
参数
必须是 类型!用来在 类的代码中 暂时代替 类的位置,然后会在运行时,被替换。 【例子】: public class MyList
{ T[] arr; public MyList(T[] arrp) { arr = arrp; } } 2.语法 2.1
泛型
的运行 当 运行的时候,JIT会帮我们生成
泛型
类的不同版本,通过如下代码可以验证: //aa是MyList中一个int的静态变量 MyList
.aa = 11; MyList
.aa = 22; //照理说,同为MyList类的静态变量,应该保存最后一次赋值的 22 //但是输出的时候,确实生成了两个不同的版本 Console.WriteLine(MyList
.aa.ToString());//11 Console.WriteLine(MyList
.aa.ToString());//22 //由此看出,JIT在运行代码的时候,分别为带不同的
泛型
参数
的MyList类生成了不同的版本。 MyList
.dd = new Dog(); MyList
.dd.age = 11; MyList
.dd = new Dog(); MyList
.dd.age = 22; Console.WriteLine(MyList
.dd.age.ToString());//11 Console.WriteLine(MyList
.dd.age.ToString());//22 【问题】为什么JIT在执行的是有要根据
泛型
类 MyList
里的T 来产生不同的 MyList类的版本? 因为 只有当T确定为某种类型的时候,JIT才有可能计算出 当前MyList类的对象在内存中要分配多大的空间。 3.
泛型
约束 3.1基类约束 public class House
where TPet:Dog //约束 TPet必须是 Dog或Dog的子类 where TPet2:Cat //约束 TPet必须是 Cat或Cat的子类 { TPet pet1; TPet2 pet2; }
SAP通用接口代码NCo3.0
NCo3.0调用RFC,通用接口, 支持
泛型
和动态类型。 Sap通用接口 一、 接口说明 1. 入参
Dictionary
,出参
泛型
1.1 接口ExecuteString public T ExecuteString(string FunName,
Dictionary
import) 实例代码: SapRfcHelper sapserver = new SapRfcHelper("10.6.203.19", "100", "E_SFC", "Sfcs@123");
Dictionary
import3 = new
Dictionary
(); import3.Add("NUM", "1"); import3.Add("STATUS", "1"); //入参字符串出参对象 StatusModel d = sapserver.ExecuteString("Y_RFC_SUPPLY_ZMM10_STATUS", import3); 1.2 接口ExecuteStructure public T ExecuteStructure(string FunName,
Dictionary
import) 没有测试实例 1.3 接口ExecuteTable public T ExecuteTable(string FunName, string tableName,
Dictionary
import) 实例代码:
Dictionary
import23 = new
Dictionary
(); import23.Add("AUFNR", "111"); //入参表格出参对象 MappingModel fd = sapserver.ExecuteTable("Z_SFC_BU_MO_MAPPING", "BU_MO", import23); 2. 入参
Dictionary
,出参动态类型 2.1 接口Execute public ExpandoObject Execute(string FunName,
Dictionary
import) 3. 入参
Dictionary
,出参
泛型
3.1 接口Execute public T Execute(string FunName,
Dictionary
import) 二、出参
泛型
对象 注意事项: 1. 仅对属性赋值,字段自动忽略(如果有异常,请检查) 2. 属性不能多于sap接口的
参数
3. 属性名即是sap接口的Key 列如:
Java语言从入门到精通课程(第5季)--
泛型
类、
泛型
方法、
泛型
接口等
提供详细的笔记作为辅助工具,200多条笔记帮助学员快速掌握Java200多个知识点 第16章
泛型
:
泛型
接口、
泛型
方法、匿名类的
泛型
、
泛型
占位符、基类和导出类
泛型
、任何类型的
泛型
、
使用
泛型
创建实例、
泛型
数组 课程特色...
json辅助类库
NewtonJson算是比较常用的json解析库了,我的项目中基本都
使用
该库,因为Unity上也有其相关的库,所以保证了多种项目之间的统一。同时NewtonJson的序列化和反序列化的接口比较简单,相对的功能也比较强大。不过在
使用
中也不是没有坑的,所以把一些心得记录下,以备日后查询。 序列化和反序列化 序列化和反序列化很简单,调用相关的接口即可。反序列化的时候可以指定
泛型
参数
,直接解析成对应的对象,这个功能比很多轻量级的JSON库要强很多了,省去了我们大量的new对象和赋值的步骤。也可以不指定
泛型
,解析成的对象可以转换成
Dictionary
,键值是字符串,value是object。
C#实现自定义
Dictionary
类实例
本文实例讲述了C#实现自定义
Dictionary
类。分享给大家供大家参考。具体如下: 1.关于My
Dictionary
类 本文中实现的My
Dictionary
类具有如下功能 1)可以增加、修改、删除键值对 2)可以通过索引器,找到一个键对应的值 3)可以遍历打印类中全部的键值对 4)可以将类中的序列转化为有序的(不排序、升序、降序)List类型 My
Dictionary
类是一个具有两个
参数
的
泛型
类,内部机制采用以键值对(KeyValuePair)类型为元素的双向链表(LinkedList)实现 2.实现代码 class MyDictioinary
{ Linke
C#
110,538
社区成员
642,577
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章