Поделиться через


Ошибка компилятора CS1716

Обновлен: Ноябрь 2007

Сообщение об ошибке

Не используйте атрибут "System.Runtime.CompilerServices.FixedBuffer". Вместо него используйте модификатор поля "fixed".
Do not use 'System.Runtime.CompilerServices.FixedBuffer' attribute. Use the 'fixed' field modifier instead.

Эта ошибка возникает в разделе небезопасного кода, который содержит объявление массива фиксированного размера, подобного объявлению поля. Этот атрибут использовать не рекомендуется. Вместо этого, используйте ключевое слово fixed.

Пример

Следующий пример проводит к созданию ошибки CS1716.

// CS1716.cs
// compile with: /unsafe
using System;
using System.Runtime.CompilerServices;

public struct UnsafeStruct
{
    [FixedBuffer(typeof(int), 4)]  // CS1716
    unsafe public int aField;
    // Use this single line instead of the above two lines.
    // unsafe public fixed int aField[4];
}

public class TestUnsafe
{
    static int Main()
    {
        UnsafeStruct us = new UnsafeStruct();
        unsafe
        {
            if (us.aField[0] == 0)
                return us.aField[1];
            else
                return us.aField[2];
        }
    }
}