Как исправить выражения точек останова в Visual Studio 2017 - PullRequest
0 голосов
/ 30 января 2019

В VS2012 вы можете использовать некоторые методы сбора в выражениях точек останова, например:

test.Contains("3")

Однако в 2017 году выдается следующая ошибка:

Условие дляНе удалось выполнить точку останова.Условие было «test.Contains (« 3 »)».Возвращена ошибка «error CS1061:« string [] »не содержит определения« Contains », и доступный метод расширения« Contains », принимающий первый аргумент типа« string [] », не найден (вы пропускаете использованиедиректива или ссылка на сборку?) '.Нажмите OK, чтобы остановиться на этой точке останова.

Это как-то связано с моим экземпляром VS2017, или они что-то сломали в 2017 году?Кто-нибудь знает, как это решить.Выражения точек останова были великолепны в 2012 году, но в 2017 году они практически бесполезны.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Вы имели в виду test типа List<string> или string[] (как следует из сообщения об ошибке)?

Если вы намеревались использовать System.Collections.Generic.List.Contains (string) , просто исправьте тип test.


Если вы хотите, чтобы test был типа string[],прочитайте до конца.

Ошибка, которую вы получаете, та же ошибка компиляции, которую вы получите, если напишите условное выражение из точки останова в коде:

using System;

internal static class Program
{
    private static void Main(string[] args)
    {
        string[] test = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };

        test.Contains("3"); //Compiler Error
    }
}

string[] не содержит определения для Contains принятия первого аргумента типа string.

Для доступа к методу расширения Enumerable.Contains в пространстве имен System.Linq, вынеобходимо ввести его в область действия с помощью этой директивы using в коде:

using System.Linq;

Кроме того, вам необходимо использовать любой тип или метод из этого пространства имен в коде, чтобы условие точки останова работало должным образом.

Кроме того, вы можете вызвать метод напрямую:

System.Linq.Enumerable.Contains(test, "3")

However, вам все еще нужно добавить соответствующую директиву using и фактически использовать в коде любой тип или метод из этого пространства имен.

0 голосов
/ 30 января 2019

Я только что попробовал это в моей версии Visual Studio Enterprise 2017 15.9.5.Моя условная точка останова test.Contains("foo") работает как положено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...