Ошибка "A field initializer cannot reference the non-static field, method, or property" - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте,объясните пожалуйста,почему возникает ошибка:"A field initializer cannot reference the non-static field, method, or property 'GenericsHW.MyList<T>.array' ".Ведь в методе Contains(T item) организован точно такой же цикл,но ошибки нет;с чем это связано?При чём если я сделаю array статическим,то всё ок(почему нужно писать static?). Заранее спасибо
namespace GenericsHW
{   
    interface IMyList<T>
    {
        void Add(T a);
        T this[int index] { get; }
        int Count { get; }
        void Clear();
        bool Contains(T item);
    }

    class MyList<T>:IMyList<T>
    {
        T[] array = null;
        delegate void ShowArrayElements();

        public MyList()
        {
            array = new T[0];
        }
 
        public  int Count
        {
            get { return array.Length; }
        }
 
        public void Add(T a)
        {
            T[] temp = new T[array.Length + 1];
 
            for (int i = 0; i < array.Length; i++)
                temp[i] = array[i];
 
            temp[array.Length] = a;
 
            array = temp;
        }
 
        public T this[int index]
        {
            get { return array[index]; }
        }
 
        public void Clear()
        {
            array = new T[0];
        }
 
        public  bool Contains(T item)
        {
            foreach (T ar in array)
            {
                if (ar.Equals(item))
                    return true;
            }
            return false;
        }
 
        public override string ToString()
        {
            return String.Format("Количество элементов массива:{0}\n", array.Length);
        }
 
        private ShowArrayElements showArray = () =>
        {
            foreach (T ar in array)
            {
                Console.WriteLine("{0} ",ar);
            }
        };

    }
}

Решение задачи: «Ошибка "A field initializer cannot reference the non-static field, method, or property"»

textual
Листинг программы
        private ShowArrayElements showArray => () =>
        {
            foreach (T ar in array)
            {
                Console.WriteLine("{0} ", ar);
            }
        };

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.667 из 5
Похожие ответы