【发布时间】:2013-01-02 22:38:01
【问题描述】:
我不明白为什么下面的代码会返回 Cannot resolve method Write(T) - 这对我来说似乎很明确:
private static void WriteToDisk<T>(string fileName, T[] vector) { using (var stream = new FileStream(fileName, FileMode.Create)) { using (var writer = new BinaryWriter(stream)) { foreach(T v in vector) writer.Write(v); writer.Close(); } } }
我想定义一个通用的二进制写入方法,可以处理向量,例如int[]、long[] 或 double[]。
【问题讨论】:
-
旁注:你不需要关闭 writer,因为无论如何你都在处理它。
-
“这对我来说似乎很明确”?真的吗?如果你传入一个对象数组,它会选择哪个重载?
-
BinaryWriter.Write()不接受对象作为参数。编译器可以预先知道调用方法的所有类型,并且可以预编译方法模板的一系列实现。这在 C# 中可用吗? -
@ZeJibe 不,该功能不存在。泛型不是模板:blogs.msdn.com/b/ericlippert/archive/2009/07/30/…