0

メモリマップトファイル(MMF)について調べます。これは、MSDNhttp ://msdn.microsoft.com/en-us/library/dd997372.aspxの例に従ってこれまでに行ったことです。

class MMF {
    private long offset = 0x10000000; // 256 megabytes
    private long length = 0x20000000; // 512 megabytes
    public MMF() {
        using (var mmf = MemoryMappedFile.CreateFromFile(@"c:\NFS", FileMode.Open, "NMAP")) {
            using (var accessor = mmf.CreateViewAccessor(offset, length)) {
                int fsSize = Marshal.SizeOf(typeof(FS));
                FS nfs;
                // Make changes to the view.
                for (long i = 0; i < length; i += fsSize) {
                    accessor.Read(i, out nfs);
                    accessor.Write(i, ref nfs);

ここで、FSは別のクラスオブジェクトの単なる配列です

public  class FS {
    public NFS[] files;
    }

しかし、エラーが発生します:

タイプ「NEN_Server.FS.FS」は、ジェネリック型またはメソッド「System.IO.UnmanagedMemoryAccessor.Read(long、out T)」でパラメーター「T」として使用するために、null許容値ではないタイプである必要があります。

私は何が間違っているのですか?クラスをnull許容にする必要がありますか、それとも別の方法でアクセサーを使用する必要がありますか?

ありがとうございました

4

1 に答える 1

1

ここでのキーワードは「null不可」ではなく「valuetyp」です。struct読み取り/書き込みを行うデータに対して、ではなく、を宣言する必要がありますclassfoo?「null不可」の追加は、の代わりに使用できないことを意味するだけですfoo

于 2012-07-29T07:56:11.677 に答える