Статические методы и Методы экземпляра с тем же именем?

52
задан Dan Herbert 10 November 2010 в 04:13
поделиться

3 ответа

Нет Вы не можете. Причина ограничения состоит в том, что статические методы можно также назвать от нестатических контекстов, не будучи должен предварительно ожидать имя класса (так MyStaticMethod () вместо MyClass. MyStaticMethod ()). Компилятор не может сказать, который Вы ищете, если у Вас есть оба.

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

58
ответ дан Colonel Panic 7 November 2019 в 09:12
поделиться

Можно назвать статические методы от методов экземпляра, не имея необходимость определять имя типа:

class Foo
{
    static void Bar()
    {
    }

    void Fizz()
    {
        Bar();
    }
}

..., таким образом, это имеет смысл, что Вам не разрешили бы иметь статический метод и метод экземпляра с той же подписью.

, Что Вы пытаетесь выполнить? Трудно предложить обходное решение, не зная специфических особенностей. Я просто переименовал бы один из методов.

12
ответ дан Matt Hamilton 7 November 2019 в 09:12
поделиться

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

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

Обновление : Я сделал ошибку. Возвращаемых значений недостаточно для имения различной подписи.

0
ответ дан Franci Penov 7 November 2019 в 09:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: