C#泛型无法识别类型

Ze *_*ibe 4 .net c# generics

我无法弄清楚为什么下面的代码返回一个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();
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我想定义一个通用的二进制写方法,可以处理例如int[],long[]或的向量double[].

cdh*_*wie 10

Write()将在编译时确定要调用的重载,而不是在运行时. BinaryWriter需要Write(object)重载(或Write<T>(T)通用重载)才能允许以这种方式调用方法.此错误(正确)表示它既没有.

您将需要编写自己的包装器方法,该方法接受object(或通常类型化的参数)并检查其类型以确定BinaryWriter.Write()要调用的重载.