Ошибка «вызов перегруженного« sqrt (int & amp;) »[duplicate]

Интересно, что ни один из ответов на этой странице не упоминает два крайних случая, надеюсь, никто не возражает, если я их добавлю:

Случай с краем # 1: одновременный доступ к Словарю

Родовые словари в .NET не являются потокобезопасными, а иногда могут бросать NullReference или даже (чаще) a KeyNotFoundException при попытке получить доступ к ключу из двух параллельных потоков. Исключение в этом случае является довольно ошибочным.

Случай с краем # 2: небезопасный код

Если код NullReferenceException задан кодом unsafe, вы можете посмотреть на переменные указателя , и проверьте их на IntPtr.Zero или что-то в этом роде. Это одно и то же («исключение нулевого указателя»), но в небезопасном коде переменные часто переводятся в типы значений / массивы и т. Д., И вы ударяете головой о стену, задаваясь вопросом, как тип значения может исключение.

(Еще одна причина для небезопасного использования небезопасного кода, если вам это нужно)

2
задан John Kugelman 18 November 2010 в 18:15
поделиться

6 ответов

[g0] Существует три перегрузки [f1], которые принимают разные параметры: [f2], [f3] и [f4]. Вы можете увидеть это в выходных данных компилятора. [/G0] [g1] Если вы вызываете [f5] с целочисленным параметром, таким как [f6], целое число может быть приведено к любому из этих трех типов. Так какая функция должна быть вызвана? Компилятор не знает. Это неоднозначно, поэтому вы получаете ошибку, которая заставляет вас явно выбрать желаемую перегрузку. Просто приведите параметр, чтобы он соответствовал одной из перегрузок, например: [f7]. [/G1]
4
ответ дан AshleysBrain 28 August 2018 в 09:50
поделиться
4
ответ дан Hogan 28 August 2018 в 09:50
поделиться
4
ответ дан Martin Beckett 28 August 2018 в 09:50
поделиться
[g0] Существует три sqrt-метода: один, который принимает long, один, который принимает float, и другой, который принимает двойное значение. [/g0] [g1] Попробуйте [/g1] [f1] [g2], чтобы сообщить компилятор, который вы хотите использовать двойную версию, а затем конвертировать обратно в int. [/g2]
0
ответ дан Philipp 28 August 2018 в 09:50
поделиться
4
ответ дан Winston Ewert 28 August 2018 в 09:50
поделиться
0
ответ дан You 28 August 2018 в 09:50
поделиться