使用泛型类型调用重载函数
本文关键字:重载 函数 调用 泛型类型 | 更新日期: 2023-09-27 18:08:00
StreamWrite.Write
对Int16
、Int32
、Int64
、Double
、Single
、String
等过载
为什么我需要使用dynamic?当调用WriteList
方法时,编译器知道它是为Int32
, String
, ... .
调用的那么为什么我不能直接在StreamWrite.Write
中使用e(类型T=Int32)呢?
public void WriteList<T>(List<T> list)
{
int count = list.Count();
StreamWriter.Write(count);
foreach(T e in list)
{
dynamic d = e;
StreamWriter.Write(d);
}
}
因为重载解析(在没有dynamic
的情况下)发生在编译时,而在编译时,T
的实际类型是未知的,因为泛型是运行时特性。
编译WriteList
时,编译器不知道在IL中包含Write
的哪个方法标记