1

我需要创建一个方法来生成二进制文件(4 字节长),接收整数列表并将该列表一一写入文件中。所以,我有这个:

public void FrameCodesBinaryWriter(List<int> frameCodes)
{
    using (FileStream fileStream = new FileStream(binaryFilePath,  FileMode.Create)) // destiny file directory.
    {
        using (BinaryWriter binaryWriter = new BinaryWriter(fileStream))
        {
            for (int i = 0; i < frameCodes.Count; i++)
            {
                binaryWriter.Write(frameCodes[i]);
            }
            binaryWriter.Close();
        }
    }
}

这个对吗?或其他一些解决方案,请

4

2 回答 2

1

因为它应该可以正常工作。这是一个重构版本,您可以选择您喜欢的重构部分。

public void WriteFrameCodesAsBinary(IEnumerable<int> frameCodes)
{
    using (FileStream fileStream = new FileStream(binaryFilePath,  FileMode.Create))
    using (BinaryWriter binaryWriter = new BinaryWriter(fileStream))
    {
        foreach (int frameCode in frameCodes) {
            binaryWriter.Write(frameCode);
        }
    }
}

我将重命名该函数以描述它将执行的操作。FrameCodesBinaryWriter对我来说听起来更像是一个班级名称。

如果您不需要 的 排序List<T>,则接受 an 可能是一个想法IEnumerable<T>。这样,您可以更灵活地处理传入的内容。

有些人喜欢堆叠他们的 using 语句以去除一层嵌套(代码缩进)。就个人而言,我不是这个的忠实粉丝,但这是个人品味和风格的问题。

使用 anIEnumerable<T>会迫使我们使用foreach,但即使使用List<T>它也可以看起来更干净/更明显,您正在遍历列表。

如前所述,如果您正在使用using,则无需显式关闭二进制编写器——这将在using退出块时自动完成。

于 2011-04-18T18:19:55.090 回答
0

你不需要关闭binaryWriter,因为你有一个using子句。binaryFilePath需要是类的一个字段,除此之外它看起来还可以。

于 2011-04-18T17:09:51.310 回答