C # / Пример отладки Visual Studio - PullRequest
1 голос
/ 05 января 2009

Я пытаюсь разработать пример кода, чтобы продемонстрировать функциональность отладки в Visual Studio 2008 с C #. Я пытаюсь создать пример кода, в котором будет «не столь очевидная» ошибка, которая приведет к неожиданному выводу.

Неработающий пример:

static void Main(string[] args) {
    int a, b;

    a = args[0];
    b = args[1];

    if (a = b) Console.WriteLine("They are equal!");
    else if (a < b) Console.WriteLine("Number 1 is smaller!");
    else Console.WriteLine("Number 1 is larger!");
}

Что-то подобное не было бы слишком очевидным при простом чтении кода, но это можно легко обнаружить с помощью отладки.

Я ищу такой пример, который работал бы в Visual Studio 2008 с C #.

Спасибо за помощь!

Ответы [ 4 ]

4 голосов
/ 05 января 2009

Вот фрагмент, который вы можете добавить ...

string a = "foo";
a.Replace("foo", "bar");
Console.WriteLine(a);
0 голосов
/ 15 января 2009

Несколько других простых ошибок, с которыми я столкнулся:

1 - удаление элементов из коллекции при выполнении итерации по ней с помощью foreach (хотя это вызывает исключение, поэтому, если он не найден, вы, вероятно, заметите это без использования отладчика):

foreach (LayoutVersion lv in this.LayoutVersions)
{
    if (lv.EndDate <= endDate && lv.StartDate >= endDate)
    { //subsume this lv
        this.LayoutVersions.Remove(lv);
    }
}

2 - DateTime.AddMinutes или AddHours без присвоения результата:

 public Report Create(Area area, DateTime date, Shift shift)
    {
    DateTime startDate = new DateTime(date.Year, date.Month, date.Day);
    startDate.AddHours(shift.Time.Hour);
    startDate.AddMinutes(shift.Time.Minute);
    return Persistence.DataManager.CreateReport(area, startDate);
    }
0 голосов
/ 05 января 2009

Примерно так:

if (a != b)
  Method1();
  Method2(); // will always be called, even if a == b

... что происходит, если вы опускаете фигурные скобки, например, намерение было так:

if (a != b)
{
  Method1();
  Method2();
}
0 голосов
/ 05 января 2009

Вы можете использовать общую ошибку программирования, такую ​​как:

Я думаю, что ошибка забора может лучше всего подойти для примера отладки. Код может проходить через цикл for по всему массиву / коллекции / что угодно, но, возможно, он использует obj.length вместо obj.length-1.

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