我想在c#中实现一个泛型函数,它接受不同对象类型的字典 [英] I want to implement a generic function in c# which takes dictionary of different object types
本文介绍了我想在c#中实现一个泛型函数,它接受不同对象类型的字典的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有不同的对象,如:
class Teacher
{
public int ID {get,set};
public string Subject {get,set};
public string Designation {get,set};
}
class学校
{
public int ID {get,set};
public string Type {get,set};
}
我有两个函数FillSchool(dictTeacher)和FillTeacher(dictSchool):
FillSchool(Dictionary < ; 字符串,教师 > dictTeacher)
{dicTeacher.ID = 1 }
FillTeacher(字典< int, 学校 > dictSchool)
{dictSchool.ID = 2}
现在我想制作一个单一的功能(使用泛型或更好的方法)填充这些对象中的值。
解决方案
这非常简单。例如:
使用 System.Collections.Generic;
// ...
< span class =code-keyword> class SomeClass< KEY_TYPE,VALUE_TYPE> {
字典< KEY_TYPE,VALUE_TYPE> myDictionary =
new Dictionary< KEY_TYPE,VALUE_TYPE>();
// 仅举例来说
internal void 添加(KEY_TYPE键,VALUE_TYPE 值){
// ...
myDictionary.Add(key,值跨度>);如果已找到密钥, // 可能会抛出异常
}
// 备选方案无例外:
// 将返回新值或现有值:
internal VALUE_TYPE AddOrRetrieve (KEY_TYPE键,VALUE_TYPE 值){
if ((myDictionary.TryGetValue(key,< span class =code-keyword> out value ))
return value ; // 已存在的值
myDictionary.Add(key, value ); // 由于上面的检查,不会抛出异常
// (除非你也加入其他一些帖子)
return 值跨度>; // 新值
}
// 依此类推...
}
我希望我的评论能清楚这个用法。
-SA
I have different objects like :
class Teacher
{
public int ID {get, set};
public string Subject {get, set};
public string Designation {get, set};
}
class School
{
public int ID {get, set};
public string Type {get, set};
}
I have two functions FillSchool(dictTeacher) and FillTeacher(dictSchool) as :
FillSchool(Dictionary<string,Teacher> dictTeacher)
{ dicTeacher.ID= 1}
FillTeacher(Dictionary<int, School> dictSchool)
{dictSchool.ID = 2}
Now I want to make a single function ( using generics or some better way) which fills values in these objects.
解决方案
This is really simple. For example:
using System.Collections.Generic; //... class SomeClass<KEY_TYPE, VALUE_TYPE> { Dictionary<KEY_TYPE, VALUE_TYPE> myDictionary = new Dictionary<KEY_TYPE, VALUE_TYPE>(); // just for example internal void Add(KEY_TYPE key, VALUE_TYPE value) { //... myDictionary.Add(key, value); // may throw exception if the key is already found } // alternative without exceptions: // will return either new or already existing value: internal VALUE_TYPE AddOrRetrieve(KEY_TYPE key, VALUE_TYPE value) { if ((myDictionary.TryGetValue(key, out value)) return value; // already existing value myDictionary.Add(key, value); // due to the check above, won't throw exception // (unless you add in some other thread, too) return value; // new value } // and so on... }
I hope my comments make this usage clear.
—SA
这篇关于我想在c#中实现一个泛型函数,它接受不同对象类型的字典的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文