Вопрос о неоднозначных вызовах в C#

Существует хитрый способ проверить его на наличие расширений с разрешением «вкладки»:

chrome.tabs.query({url:'chrome-devtools://*/*'}, function(tabs){
    if (tabs.length > 0){
        //devtools is open
    }
});

Также вы можете проверить, открылся ли он для вашей страницы:

chrome.tabs.query({
    url: 'chrome-devtools://*/*',
    title: '*example.com/your/page*'
}, function(tabs){ ... })
9
задан Patrik Svensson 20 May 2009 в 09:52
поделиться

3 ответа

Общая политика дизайна C # заключается в том, чтобы вынудить вас указать, где есть потенциальная двусмысленность. Перед лицом инструментов рефакторинга, которые позволяют сразу менять, статичны вещи или нет, такая позиция великолепна - особенно для подобных случаев. Вы увидите много других подобных случаев (переопределение вместо виртуального, новое для затенения и т. Д.).

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

РЕДАКТИРОВАТЬ: В хорошем сообщении Эрика Липперта обсуждается еще одна причина такой двусмысленности, ведущей к обнаруженной вами ошибке

]
9
ответ дан 4 December 2019 в 13:49
поделиться

Вот отрывок из C # 3. Спецификация языка 0.

Сигнатура метода должна быть уникальной в классе, в котором этот метод объявлен. Сигнатура метода состоит из имени метода, количества параметров типа и числа, модификаторов и типов его параметров. Сигнатура метода не включает тип возвращаемого значения.

Модификатор 'static' не является частью подписи, поэтому ваш пример нарушает это правило уникальных подписей.

Я не знаю причины этого правила, хотя.

4
ответ дан 4 December 2019 в 13:49
поделиться

Я думаю, что нет никаких технических причин для запрета этого, но это сделано для того, чтобы защитить программиста от самого себя. Рассмотрим следующий пример:

public static void Main()
{
  BlockHeader BlockHeader = new BlockHeader();
  BlockHeader.Peek();
}

Приведенный выше пример вполне допустим, но если бы описанная вами ситуация была разрешена, можно ли было бы ее прочитать? Можете ли вы в мгновение ока увидеть, был ли вызван метод экземпляра или статический метод?

2
ответ дан 4 December 2019 в 13:49
поделиться
Другие вопросы по тегам:

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