是否有文件字节的.NET包装器?

kr8*_*r85 2 .net c# types

.NET中是否有一些文件字节包装器?

我不喜欢使用byte [].在文件字节的情况下,类型(byte [])没有给出足够的语义含义,因为并非所有byte []都是文件字节.将其作为论据传递令人不舒服......

我知道写这种自己的包装会很容易.例如:

public class FileBytes
{
    public FileBytes
    (
        byte[] value
    )
    {
        Contract.Requires(value != null);
        Contract.Requires(value.Length != 0);

        this.Value = value;
    }

    public byte[] Value { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有一些.NET-box解决方案.

usr*_*usr 8

BCL中没有这样的东西.(或者Stream抽象是你正在寻找的?)

您的包装器具有与raw相同的问题,byte[]即类型的变量FileBytes可以null.

另外,我不明白为什么来自文件的字节与来自其他地方(例如来自网络)的字节有任何不同.对字节操作的代码应该以相同的方式运行,无论它们来自何处.

  • 流抽象的+1; 对于文件I/O,这通常比`byte []`更受欢迎.从OP的描述来看,`Stream`比'byte []`更接近于OP的意图.设计用于处理文件的大多数设计良好的库都会有一个重载,它接受一个`Stream`(另一个接受文件名).这里需要注意的主要是`byte []`,`Stream`有状态; 重复使用`Stream`本身并不安全(例如,在你使用`Stream`之后,`Position`属性可能会改变).同样,`Stream`在多线程中安全使用更加困难. (4认同)