Исчезает ли Point2dCollection при передаче из метода в метод

Автор Тема: Исчезает ли Point2dCollection при передаче из метода в метод  (Прочитано 7464 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн pavka_97Автор темы

  • ADN OPEN
  • ***
  • Сообщений: 150
  • Карма: 3
Код - C# [Выбрать]
  1. ///
  2. ////List<Point2dCollection>  listTemp2=new List<Point2dCollection>();
  3. ///
  4.  
  5.             // если унаследовано от Curve, заходим
  6.                 else
  7.                 if (id0.ObjectClass.IsDerivedFrom(RXClass.GetClass(typeof(Autodesk.AutoCAD.DatabaseServices.Curve))))
  8.                 {
  9.                     using (Curve plln = (Curve)id0.Open(OpenMode.ForRead))
  10.                     {
  11.  
  12.                         if (checkCurve(id0))
  13.                         {
  14.                             //сравниваем полученный примитив с длинами в коллекции и добавляем в список
  15.                             foreach (double dbl1 in lsv)
  16.                             {
  17.                                 // если линия
  18.                                 if (id0.ObjectClass.DxfName == "LINE")
  19.                                 {
  20.                                     double length = Math.Abs(plln.GetDistanceAtParameter(plln.EndParam) - plln.GetDistanceAtParameter(plln.StartParam));
  21.  
  22.                                     if (length == 0) continue;
  23.  
  24.                                     //if (Math.Abs(length - dbl1) < Tolerance.Global.EqualPoint)
  25.                                     if (Math.Abs(length - dbl1) < tol)
  26.                                     {
  27.                                         listTemp2.Add(new Point2dCollection{
  28.                                             plln.StartPoint.TransformBy(mat).ConvertTo2D(),
  29.                                             plln.EndPoint.TransformBy(mat).ConvertTo2D()
  30.                                             });
  31.  
  32.                                         break;
  33.                                     }
  34.  
  35.                                 }
  36.                                 // если оставшаяся curve
  37.                                 else checkPline(id0, dbl1, ref mat);
  38.  
  39.                             }
  40.                         }
  41.                     }
  42.                 }
  43.  


Передаю List<Point2dCollection> из метода в метод. Уничтожается ли Point2dCollection и точки в ней при выходе из using?

Отмечено как Решение pavka_97 08-10-2020, 21:06:30

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Передаю List<Point2dCollection> из метода в метод. Уничтожается ли Point2dCollection и точки в ней при выходе из using?
Нет. Рекомендую передавать List<Point2dCollection> по ссылке (ref)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн pavka_97Автор темы

  • ADN OPEN
  • ***
  • Сообщений: 150
  • Карма: 3
Спасибо.
Off-Topic: показать

Значит ошибка где то в др. месте. Программа работает через раз и отладка не помогает. Я уж подумал что по аналогии с транзакциями объекты уничтожаются. Будем искать.

 

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
pavka_97,
Ты в курсе, что число типа double не проверяют на равенство?
Т.е. вот такой код работать не будет:
Код - C# [Выбрать]
  1. if (length == 0) continue;
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 822
  • Карма: 166
    • Мои плагины к Автокаду
Point2dCollection - это не какой-нибудь страшный DisposableWrapper, с его уничтожением можно и не заморачиваться - сборщик мусора все безопасно почистит. А точки Point2d в принципе никак не уничтожить, ибо они не IDisposable, и даже не класс, а структура.

Оффлайн pavka_97Автор темы

  • ADN OPEN
  • ***
  • Сообщений: 150
  • Карма: 3
вот такой код работать не будет:
В курсе конечно.Это я ищя ошибку впопыхах понаставил.
Off-Topic: показать

На свежую голову нашел. В логике ошибка была.