не может неявно преобразовать выражение e типа main.T в main.main.T - PullRequest
0 голосов
/ 02 октября 2019

Что означает двойное main? Есть ли как-то два вложенных уровня main scope?

Error: cannot implicitly convert expression myFunction(f) of type main.M!(Tuple!(wstring, wstring)*) to main.main.M!(Tuple!(wstring, wstring)*)

Единственное отличие - main.main вместо main.

Error: cannot implicitly convert expression myFunction(f) of type 
     main.M!(Tuple!(wstring, wstring)*)
to
main.main.M!(Tuple!(wstring, wstring)*)

Контекст:

  • M - это структура, определенная на верхнем уровне
  • вызов myFunction(f) находится внутри литерала делегата, который вызывается немедленно;что-то вроде (delegate bool () {myFunction(f);return true;})()

1 Ответ

0 голосов
/ 03 октября 2019

Оказывается, у меня было две копии определения структуры.

  1. M определение структуры
  2. определение myFunction, которое возвращает значения типа M
  3. Mопределение структуры, снова
  4. M = myFunction(f);

, таким образом, мы имеем несоответствие типов, поскольку два M на самом деле являются разными типами, но под одним и тем же именем

...