.net 在C#中从bin文件示例化字节数组

eoxn13cs  于 2023-05-02  发布在  .NET
关注(0)|答案(2)|浏览(230)

我正在尝试用C#创建一个对象,用于我的一个项目。我需要创建一个接受String(bin文件位置的路径)的对象,并在创建该对象的示例时创建一个字节数组。
我不想声明数组的大小,因为这可能会导致问题,因为我每次都会加载不同的bin文件
简而言之,我需要有一个对象,它在示例化时接受bin文件路径的String作为输入,并在对象内创建一个字节数组。
到目前为止,我已经尝试声明字节数组,没有默认大小,然后尝试在创建对象时实现它,但我得到一个错误

// Class File for the Object
namespace binMapper;

public class binFile {
    public byte[] binData {get;set;} = new byte[];

    public binFile(String pathToBinFile)
    {
the Object
        this.binData = File.ReadAllBytes(pathToBinFile);
    }
}

错误如下所示
数组创建必须具有数组大小或数组初始值设定项[ObjCSharp]csharp(CS1586)

kognpnkq

kognpnkq1#

File.ReadAllBytes创建一个全新的数组。因为在构造函数中读取bin文件,所以不需要使用默认值初始化属性。解决方案看起来像这样(也实现了一些标准的命名方案):

namespace BinMapper;

public class BinFile
{
    public byte[] BinData { get; set; }

    public BinFile(string pathToBinFile)
    {
        this.BinData = File.ReadAllBytes(pathToBinFile);
    }
}
s8vozzvw

s8vozzvw2#

您可能希望将 empty 数组设置为binData属性的默认值。从技术上讲,您可以使用new byte[0]来实现这一点,但更好的方法不是创建不需要的示例,而是使用Array.Empty

public class binFile {
    // I doubt that you want to set binData from outside the class
    // that's why I use "privae set"
    public byte[] binData {get; private set;} = Array.Empty<byte>();

    public binFile(String pathToBinFile)
    {
        this.binData = File.ReadAllBytes(pathToBinFile);
    }

    ...
}

相关问题