【发布时间】:2014-06-07 02:59:04
【问题描述】:
我正在编写一个对除 bool 之外的所有基本类型都有效的模板。 具体来说,它正在写入不支持 Write(bool) 的 BinaryWriter。
public void Write<T>(T val) where T : struct
{
if (binWriter != null)
{
binWriter.Write(val);
}
}
C# 编译器给了我错误:
error CS1502: The best overloaded method match for 'System.IO.BinaryWriter.Write(bool)' has some invalid arguments
如果我可以使用where 将模板限制为非布尔值,我认为我可以摆脱它。有没有办法做到这一点?或者是否有其他解决方案可以解决此限制?
【问题讨论】:
-
BinaryWriter.Write确实有bool的重载。关于你的问题,没有没有办法做到这一点。另请注意,C# 泛型与 C++ 模板完全不同,您不会针对您提供给Write调用的每种具体类型专门调用Write。 -
您不能对
T施加任何约束,将其限制为“非布尔值”。 Here 是允许的约束列表。 -
我会咬紧牙关,为
Write编写一个实现binWriter.Write支持的每种类型的重载。最多 5 分钟,稍微复制和粘贴。
标签: c#