2013-05-06 2 views
3

Я написал класс игрока и публичный класс под названием «Опыт». Когда я пытаюсь получить уровень игрока от 1 до 2, я использую этот метод:Частный класс не может быть параметром в C#?

public static void LvlPlayer(Player player) 
{ 
    if (player.Level != 10) 
    { 
     ++player.Level; 
     player.Attack += 2; 
    } 
} 

Вот сообщение об ошибке дает мне:

Error 1 Inconsistent accessibility: parameter type 'Game.Player' is less accessible than method 'Game.Experience.LvlPlayer(Game.Player)'

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

Почему это не работает?

+2

Что такое модификатор доступа обоих ваших 'Player' CLAS s и поле 'Level'? общественности? частный? защищенный? что-то другое? – Porkbutts

ответ

10

Ваш класс должен быть открытым:

public class Player 
{ 
(...) 
} 

Вашего класс can'be менее заметным (внутренний), чем метод, которые используют его (метод LvlPlayer является публичным), именно поэтому ошибка сказать вам, что

'Game.Player' является менее доступным, чем метод 'Game.Experience.LvlPlayer (Game.Player)'

+0

+1 но, пожалуйста, уточните немного –

+0

сделано, надеюсь, этого достаточно, потому что я не знаю, как лучше объяснить :-) – Fabske

+0

Просто, чтобы быть педантичным ... вы можете делать частные занятия только частными. Обычные ежедневные могут быть только до внутреннего., Который также менее заметен, чем общедоступный. – aqwert

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