Вопрос о CLR. Почему перегрузка метода в C# решает, что пустой указатель является строкой? [дубликат]

Попробуйте это:

window.attachEvent("onload", myOtherFunctionToCall);

function myOtherFunctionToCall() {
    // do something
}

редактирование: эй, я просто готовился войти в систему с Firefox и переформатировать это сам! Все еще не кажется коду формата для меня с IE7.

6
задан Community 23 May 2017 в 12:30
поделиться

2 ответа

Ответ в том, что он должен выбрать ссылочный тип (null не работает для типов значений), и каждая строка является объектом , но не каждый объект является строкой . Дополнительную информацию см. В ответе Джона Скита на этот вопрос.

В ответ на ваш второй пример, если в передается значение переменной, имеющей значение NULL, она всегда будет оценивать значение false, независимо от что.

2
ответ дан 17 December 2019 в 20:33
поделиться

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

Подробности см. В разделе 7.4.3 в Спецификации языка C # . Там очень сложное обсуждение, но основная идея состоит в том, что есть алгоритм, который компилятор использует для определения «лучшей» перегрузки, преобразование из EX в PX лучше чем преобразование из EX в QX.

Дополнительная информация:

• Если неявное преобразование из T1 в T2 существует, и неявное преобразование отсутствует от T2 до T1 существует, C1 лучше преобразование.

Поскольку существует неявное преобразование любого производного класса в его базовый, но не наоборот, приведенные выше правила означают, что любая соответствующая перегрузка класса dervied всегда превосходит параметр базового класса в перегрузке.

0
ответ дан 17 December 2019 в 20:33
поделиться
Другие вопросы по тегам:

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