Ben Marks Ответов: 1

Недоступна из-за своего уровня защиты


Привет всем,

Я пытаюсь получить список, параметры которого являются именами моделей физических дисков. Мне удалось получить информацию о физическом диске в ArrayList, и теперь я пытаюсь получить список для отображения имен моделей. Я пытаюсь сделать это с помощью этого кода.

foreach (HardDrive d in Reporting.hdCollection)
           {
               DriveBox.Items.Add(d.model);
           }


Эта d.модель дает мне ошибку, что она недоступна из-за ее уровня защиты, однако она объявлена в Reporting.cs общедоступным способом

class Reporting
{
public static ArrayList hdCollection = new ArrayList();


Я не знаю, почему это происходит, но был бы очень признателен за любую помощь, которую кто-либо может оказать. Потому что у меня действительно нет идей.

Ben Marks

это класс просто объявили, как
классный репортаж

тогда разве он не является публичным по умолчанию? Я все равно изменил его на публичный, и это не имело никакого значения.

Причина, по которой я использовал arraylist вместо прямого списка, заключается в том, что хранится другая информация, такая как серийные номера и другая информация.

Sergey Alexandrovich Kryukov

Если он говорит "недоступно из-за его уровня защиты", он недоступен, точка. Вы не предоставляете соответствующий пример кода.

Убедитесь, что вы понимаете модификаторы доступа. "Публично" - это не информативно. И она не обязательно должна быть публичной, во многих случаях достаточно "внутренней".

--СА

Ben Marks

Я принимаю вашу точку зрения SA, однако если вы видите для каждого из них, которые я предоставил, он может видеть Reporting.hdcollection, который является arraylist, содержащим поле модели.

Только это поле недоступно, означает ли тот факт, что оно может получить доступ к Reporting.hdcollection, что оно является общедоступным?

1 Ответов

Рейтинг:
8

TimGameDev

Проверьте это model из ваших HardDrive класс является публичным/внутренним или каким-либо другим запросом.

И я думаю, что это лучше использовать List<HardDrive> вместо ArrayList


Sergey Alexandrovich Kryukov

Конечно. Оба пункта действительны, вплоть до одной детали.

Скорее всего, он не должен быть публичным, должен быть внутренним; не следует предоставлять больше доступа, чем это действительно требуется.

Я проголосовал за 4.
--СА

TimGameDev

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

Тимур