Это работает
open System
let f = Action(fun () -> Unchecked.defaultof<_>)
Но это
let f = System.Action(fun () -> Unchecked.defaultof<_>)
создает ошибку компиляции
Существует несколько типов, называемых "Action", с разными номерами общих параметров. Предоставить экземпляр типа для устранения неоднозначности разрешения типа, например. 'Действие <, _,, _,, _ > '.
Я знаю, что могу исправить это, добавив заполнитель типа типа (System.Action<_>(...)), но любая идея, почему они ведут себя по-другому?
ИЗМЕНИТЬ
Обнаружено это в спецификации, раздел 14.1.9:
Когда открывается группа декларации модуля или пространства имен
F, элементы добавляются в среду имен следующим образом:
- Добавьте тип в таблицу TypeNames. Если тип имеет общее имя CLI, такое как
List'1, тогда добавляется запись как подList, так иList'1.
Является ли это поведение реплицированным для полностью квалифицированных типов (с пропущенными параметрами типа)? Это не так.