c# – 使用泛型类型调用重载函数
发布时间:2020-12-16 02:02:09 所属栏目:百科 来源:网络整理
导读:StreamWrite.Write重载了Int16,Int32,Int64,Double,Single,String等等. 为什么我需要使用动态?在调用WriteList方法时,编译器知道它是为Int32,String,…调用的. 那么为什么我不能直接在StreamWrite.Write中使用e(类型T = Int32)? public void WriteListT(Li
StreamWrite.Write重载了Int16,Int32,Int64,Double,Single,String等等.
为什么我需要使用动态?在调用WriteList方法时,编译器知道它是为Int32,String,…调用的. 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); } } 解决方法
因为重载解析(在没有动态的情况下)在编译时发生,并且在编译时,T的实际类型是未知的,因为泛型是运行时特征.
编译WriteList时,编译器不知道在IL中包含哪个Write方法标记. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |