Bea*_*ear 3 c# generics extension-methods type-constraints
我想扩展BinaryWriter类,以便能够将列表写入流.我想用多种类型的列表来做这件事.我将此通用函数设置为扩展
public static void Write<T>(this BinaryWriter source, IEnumerable<T>items)
{
foreach (T item in items)
source.Write(item)//This doesn't work
}
Run Code Online (Sandbox Code Playgroud)
这是可能吗?我知道write可以处理所有内置类型.我知道有能力将T约束到某些类型,但我无法为int和double执行此操作.
我只需要它为int,double和bytes工作.
我知道有能力将T约束到某些类型
不幸的是,编译器不知道T
这些类型之一,所以它必须抱怨.
我只需要它为int,double和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);
}
Run Code Online (Sandbox Code Playgroud)