Это ошибка в visual studio 2019? Я получаю ошибку CS0570 для программы во время отладки - PullRequest
3 голосов
/ 09 апреля 2020

Рассмотрим следующий интерфейс и фиктивный класс, который его реализует.

interface I<out T>
{
    System.Collections.Generic.IEnumerable<T> M()
    {
        var x = default(T);
        yield return x;
    }
}

public class C : I<string>
{
    public static void Main() => System.Linq.Enumerable.Any(((I<string>)new C()).M());
}

теперь ставит точку останова в строке 6 (yield return x). Запустите программу, и вы заметите что-то странное, если попытаетесь посмотреть x. Она скажет вам следующее:

ошибка CS0570: '<> x. <> M0 (I.d__0)' is не поддерживается языком

Очевидно, что программа работает, поэтому она поддерживается языком, но отладчик понятия не имеет, что с ним делать. Это также происходит для async (Task{T}, ValueTask{T} или IAsyncEnumerable<T>) методов возврата.

Перед обычным потоком комментариев это НЕ мой фактический код. У меня есть действительный допустимый вариант использования для использования элемента интерфейса по умолчанию (управление версиями интерфейса), мой фактический метод более сложен и вызывает другие члены интерфейса, но dim - это метод генератора, а отладка плохо совместимой реализации - это кошмар. и мне по сути пришлось прибегнуть к регистрации сообщений.

...