Techsster Ответов: 1

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


Привет пытался получить доступ к моему методу приветствия из моего вспомогательного класса, но он недоступен из-за его уровня защиты.

Как я могу получить доступ к методу из другого класса в c# или обойти эту процедуру?

Что я уже пробовал:

using System;

namespace classes
{
    public class Helper
    {
        static void greet()
        {
            Console.WriteLine("Hello");
        }
    }
    
    
    class caller
    {
        private static void Main(string[] args)
        {
            var instance = new Helper();
            instance.greet();
        }
    }
}

1 Ответов

Рейтинг:
1

phil.o

Просто объявите метод как public:

public static void greet()

Более подробная информация об уровнях доступности:
Уровни Специальных Возможностей - Справочник По C# | Microsoft Docs[^]

Правка: внимательно перечитайте свой код, когда вы определяете метод как static, вы получаете доступ к нему не из экземпляра класса, а из самого класса. Так что у вас есть два варианта:

Либо вы сохраняете метод статичным, но соответствующим образом изменяете свой вызов:
using System;

namespace classes
{
    public class Helper
    {
        public static void Greet()
        {
            Console.WriteLine("Hello");
        }
    }
    
    
    class Caller
    {
        private static void Main(string[] args)
        {
            Helper.Greet();
        }
    }
}
Это самый разумный способ, так как А) вы не используете в методе никакой переменной экземпляра. б) это упрощает использование метода (вам не нужно создавать экземпляр вспомогательного класса).

Или вы делаете метод методом экземпляра:
using System;

namespace classes
{
    public class Helper
    {
        public void Greet()
        {
            Console.WriteLine("Hello");
        }
    }
    
    
    class Caller
    {
        private static void Main(string[] args)
        {
            var instance = new Helper();
            instance.Greet();
        }
    }
}

Обратите внимание, что я также исправил случай класса и метода в соответствии с общепринятыми правилами оболочки C#.


Maciej Los

5ed!