我想扩展 BinaryWriter 类,以便能够将列表写入流。 我想用多种类型的列表来做到这一点。我将这个通用函数设置为扩展
public static void Write<T>(this BinaryWriter source, IEnumerable<T>items)
{
foreach (T item in items)
source.Write(item)//This doesn't work
}
这有可能吗?我知道 write 可以处理所有内置类型。我知道可以将 T 限制为某些类型,但我不能为 int 和 double 这样做。
我只需要它来处理整数、 double 和字节数。
最佳答案
I know there is the ability to constrain T to certain types
不幸的是,编译器不知道 T
是这些类型之一,所以它不得不提示。
I only need it to work for ints, doubles, and bytes.
然后你可以进行三个重载:
public static void Write(this BinaryWriter source, IEnumerable<int>items) {
foreach (var item in items)
source.Write(item);
}
public static void Write(this BinaryWriter source, IEnumerable<double>items) {
foreach (var item in items)
source.Write(item);
}
public static void Write(this BinaryWriter source, IEnumerable<byte>items) {
foreach (var item in items)
source.Write(item);
}
关于c# - 使用泛型变量作为参数调用重载函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12015459/