Класс C # по умолчанию - PullRequest
       39

Класс C # по умолчанию

2 голосов
/ 26 октября 2011

Есть ли способ присвоить классу метод по умолчанию, например:

public class EscMenu
{
    public static void EscMenu()
    {
        //do something
    }

   public static void SomeOtherMethod()
   {
       //do something else
   }
}

Поэтому, когда я вызываю EscMenu.SomeOtherMethod(); в другом классе того же решения, он «делает что-то еще», но я не могу вызвать EscMenu();.

Как я могу это сделать?

Спасибо!

EDIT:

Хорошо, я попытаюсь объяснить это лучше:

Я просто хочу, чтобы класс EscMenu делал что-то, когда я вызываю это из другого (внешнего) класса, такого как: EscMenu();. Конечно, я мог бы легко создать метод default() в EscMenu и вызвать EscMenu.default(); извне. Но мне бы очень хотелось просто позвонить EscMenu();

Если это просто невозможно или я не могу объяснить себя, тогда просто не возражаешь; -)

Еще раз спасибо!

Ответы [ 4 ]

6 голосов
/ 26 октября 2011

Нет, вы не можете присвоить методу то же имя, что и содержащий его тип, - и вы действительно не хотите путать имя типа с именем метода в любом случае. Зачем вводить двусмысленность?

Если бы вы могли привести пример, когда вы хотите написать код не так, как он уже доступен, мы можем помочь вам больше. (Например, может быть, что методы расширения могут помочь.)

0 голосов
/ 26 октября 2011

У вас есть (если вы очистили синтаксис) статический конструктор .

  • Статический конструктор не принимает модификаторы доступа или не имеет параметров.
  • Статический конструктор вызывается автоматически для инициализации класса перед созданием первого экземпляра или ссылками на любые статические члены.
  • Статический конструктор нельзя вызвать напрямую.
  • Пользователь не может контролировать выполнение статического конструктора в программе.
0 голосов
/ 26 октября 2011

Я не знаю, что вы имеете в виду, используя метод по умолчанию. Но чтобы другие классы не вызывали методы в вашем классе ExcMenu, вы можете сделать ваш метод приватным:

public class EscMenu
{
    private static void EscMenu()
    {
       //do something
    }

    public static void SomeOtherMethod()
    {
        //do something else
    }
}
0 голосов
/ 26 октября 2011

Концепция метода по умолчанию является своего рода абсурдом в C #, но из того, что я могу почерпнуть из ваших требований, вы не хотите иметь возможность вызывать EscMenu извне (т.е. вне класса)поэтому для этого используйте модификатор доступа private:

private static void EscMenu(){
    //do something
}

Но вам понадобится отдельное имя для члена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...