2015-05-13 2 views
-4

Я получаю эту ошибку во время компиляции:C# - Не будучи в состоянии использовать list.Count() в этом сценарии

System.Collections.Generic.List<string>.Count is inaccessible due to its protection level 

о попытке использовать метод Count() в списке я создал, что представляет собой инвентарь в моем проекте. Сам список является открытым, так что я не могу получить мою голову вокруг, почему это происходит ... (новичок здесь)

public class Inventory 
{ 
    private List <string> _inventory; 
    public List<string> inventory {get; set;} 

    public Inventory() 
    { 
     _inventory = new List<string>(); 
     inventory = _inventory; 
    } 

    public void AddItem(string str) 
    { 
     if (inventory.Count() < 3) // error pops up here... 
      inventory.Add(str); 
     else 
      Console.WriteLine ("Your inventory is full!"); 
    } 
} 
+0

Можете привести точное сообщение об ошибке? –

+0

Какая ошибка, и происходит ли это при компиляции или во время выполнения? –

+2

Это может быть немного не по теме, но вы можете объяснить, почему вы не используете 'public List inventory {get; задавать; } '? – Voidpaw

ответ

3

При использовании списка следует использовать свойство Count, а не метод Count() , Count() - это метод расширения, и вам нужно будет импортировать System.Linq для его использования.

+2

Это не решит проблему. При отсутствии пространства имен будет показана другая ошибка. –

+0

OP сказал: «System.Collections.Generic.List .Count недоступен из-за уровня защиты« Как это возможно с его кодом? –

+1

@Francisco Использование свойства Count вместо фактически обработанного метода. Спасибо! – Bagongo

-3

count - это свойство не метод.

в вашем случае это должно быть

if (inventory.Count < 3)

0

Единственный способ, которым я мог видеть это как, возможно, происходит, если вы каким-то образом переопределить метод Count на список или реализовать свой собственный класс для списка. Вы делали это? Если это не так, и это должно исправить.

Смежные вопросы