Причина этой ошибки в том, что модификатор доступа по умолчанию для методов private
, что означает, что их могут видеть только члены одного класса.
Поскольку вы хотите сослаться на метод из другого классав том же пространстве имен вам нужно предоставить более широкий доступ к методу, изменив модификатор доступа либо на internal
(что означает, что его могут видеть все классы в одной сборке), либо на public
(что означает, что его могут видеть все).
Любой из этих способов должен решить вашу проблему:
// Only members of the same assembly can access this method
internal static void Review() { // code omitted }
// Everyone can access this method
public static void Review() { // code omitted }
Подробнее о модификаторах доступа можно прочитать здесь .
Кроме того, вы установили возвращаемое значение Review
равным void
, а затем пытаетесь передать его в метод Console.WriteLine()
, который ожидает фактический тип.Это приведет к ошибке компиляции (что-то вроде: «не может преобразовать void
в [someType]
»).
Чтобы решить эту проблему, вы можете либо просто вызвать метод из main и позволить методу записать вконсоль:
private static void Main(string[] args)
{
Book.Review();
}
Или, я бы предпочел, чтобы метод возвращал строку, а затем записывал ее в консоль в методе Main
(я предпочитаю это, потому что это делает метод более универсальным- кто-то может вызвать его, чтобы просто получить обзор, не отображая его, например, на консоли):
public static string Review()
{
int x = 10;
return x.ToString();
}
Обратите внимание, что при вызове метода вам необходимо будет добавить скобки после имени:
private static void Main(string[] args)
{
Console.WriteLine(Book.Review());
}