作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
StreamWrite.Write
为 Int16
、Int32
、Int64
、Double
重载>、Single
、String
等等。
为什么我需要使用动态?当调用 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
时,编译器不知道要将Write
的哪个方法标记包含在IL中。
关于c# - 使用泛型调用重载函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24156804/
我是一名优秀的程序员,十分优秀!