gpt4 book ai didi

c# - 使用泛型调用重载函数

转载 作者:行者123 更新时间:2023-11-30 14:10:24 24 4
gpt4 key购买 nike

StreamWrite.WriteInt16Int32Int64Double 重载>、SingleString 等等。

为什么我需要使用动态?当调用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com