rt
public T getValue<T>(T t)没见人用过,也没找到什么资料
public T getValue<T>(T t)没见人用过,也没找到什么资料
解决方案 »
- 2012微软暑期实习生笔试题
- interface类可以实现同名函数,但是参数和返回值不同的功能吗
- 打开文件对话框中看不到部分文件是什么原因?
- 请教DataGridView全选/全不选 checkbox的问题!
- 怎理解IM软件创建数据库连接对象SqlConnection 不能定义为static?
- 求教:C#怎样实现在EXCEL中插入数学编辑器中的特殊字符
- 我想每隔一段时间运行某个函数,像JAVASCRIPT 的setInterval一样,
- 怎么用Server.Transfer传值和怎么实例其他网面的类?
- 关于C#的Socket编程,局域网通信的问题
- 每当用一个函数时,就提示报错!
- MDI中,如何关闭子窗口
- 关于如何创建索引 求救
回复内容太短太内涵了。
public T getValue <T>(T t) 这样的定义通常使用在父子类转换,或接口转换中
比如:getValue<int>(1);
或
getValue<Ixxx接口>(某个实现了Ixxx接口的对象实例)
List<T>. IndexOf(T item)
回复不短也不内涵了。
if (t is int) {
return t * 2;
} else if(t is string){
return t + "A";
}
}
如果想深入了解,大可以google一下:Ioc容器http://www.google.cn/search?client=pub-5434506002917399&prog=aff&channel=2000052003&q=Ioc%E5%AE%B9%E5%99%A8
字符串:Public string GetValue(string a)
整型:Public int GetValue(int a)
Object:Public Object GetValue(Object a)
而采用泛型就不需要了,只要在实现的时候指定
例如类: class c1
{
public T getValue<T>(T t)
{
T ret = default(T);
ret = t;
return ret;
}
}
调用: string s = t.getValue<string>("A");
int i = t.getValue<int>(1);
object o = t.getValue<object>(new object());
例子很简单,但是能够说明问题了.
1.IOC(控制翻转),这个应算高级用法了
2.避免重载函数(如果函数过程比较复杂,这样做有意义吗)有没有人真正在项目中用过泛型方法,望指点,另外13楼说的精华帖,实在没找到昨天反编译看了下List<T>//大概就是这样了
T[] _items;
void Add(T t){
_items[size++] = t;
}
这个结论让我非常无语,泛型出之于c++的stl。当初stl的目的可不是为了装拆箱,c++那回根本就没有装拆箱的概念
{
public MappingData()
{ } public T MappdingDataRow<T>(DataRow row)
where T : new()
{
T t = new T();
foreach (PropertyInfo p in t.GetType().GetProperties())
{
p.SetValue(t, row[p.Name], null);
}
return t;
} public List<T> MappdingDataTable<T>(DataTable table)
where T : new()
{
T t = new T();
List<T> list = new List<T>(); foreach (DataRow row in table.Rows)
{
t = this.MappdingDataRow<T>(row);
list.Add(t);
}
return list;
}
}
一个简单的泛型类的应用是循环DataTable里的数据到实体类里面的,实体类就是 T,访问元数据填充这个泛型实体,
,持久层和反射的话可能也用到泛型类,还有泛型方法和泛型集合等可以限制参数类型安全等,也可以去msdn查找看看
{
T G<T>(T arg) {...}
}
class Generic<T>
{
T M(T arg) {...}
}红字部分什么意思,没太读懂
.net的泛型确实是为 优化拆箱装箱而设计的。因为是2005才有的特性,2003不具备泛型。c++我没用过,没有发言权。但如果是为了继承C++的特性的话,那我想应该在2003就开始启用。正是2003里大量拆装箱操作 让MS意识到自己该做点什么了。所以才有了2005的泛型。
当然,我是这样看的,仅仅代表我的看法。