|
Возврат DataSet из функции
|
|||
---|---|---|---|
#18+
Мучает меня вопрос: насколько безопасен в смысле освобождения ресурсов следующий код. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
И вообще хорошая ли практика из функции возвращать объекты БД такие как DataSet, DataTable, DataRow? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2013, 19:07 |
|
Возврат DataSet из функции
|
|||
---|---|---|---|
#18+
sutni, если не изменяет память, Dispose у Dataset пустой,( атавизм) ( могу ошибиться - поправьте), так что вызывать или нет не критично. Ну а что тут крамольного - родить его в функции, с точки зрения кода стек этой функции все равно поднимется в стек вызываемой. Вполне нормально, с точки зрения рефакторинга... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2013, 19:35 |
|
Возврат DataSet из функции
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5.
Безотносительно DataSet... стремно так делать ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2013, 22:16 |
|
Возврат DataSet из функции
|
|||
---|---|---|---|
#18+
buser, Я это понимаю. Поэтому возникает мысль о том, что вытащить нужно всё из SQL-ных объектов, запихнуть всё в какой-то свой класс основанный на List<>, а SQL-ные аккуратно убить. ЗЫ. Код не мой. Мне предстоит сопровождение. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2013, 22:29 |
|
Возврат DataSet из функции
|
|||
---|---|---|---|
#18+
Где-то в степис точки зрения кода стек этой функции все равно поднимется в стек вызываемой. стек ни при делах, говнодатасет - всё равно в куче ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2013, 23:46 |
|
Возврат DataSet из функции
|
|||
---|---|---|---|
#18+
Изопропил, стек функции и указатель на ds в этом стеке ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2013, 23:56 |
|
Возврат DataSet из функции
|
|||
---|---|---|---|
#18+
Где-то в степи, мы же не о С++ говорим(где можно вернуть из функции указатель на экземпляр класса лежащий в стеке и долго потом думать почему всё развалилось) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2013, 10:54 |
|
Возврат DataSet из функции
|
|||
---|---|---|---|
#18+
Изопропил, Ну тут как бы не стоит вопрос - развалилось а хорошо ли возвращать из функции указатель на объект из кучи, для дальнейшего использования. Ну и мое имхо по этому примеру. статический метод, результат метода в usingе это ли не подсказка компилятору оптимизировать его как inline ( без aggressiveinlining) проверить впрочем очень просто - имхо, заменить блок using на finally и там ds=null если нас не вынесет в nullreferencexcep при использовании - то метод упрощен..( но это как бы на уровне предположения) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2013, 15:34 |
|
Возврат DataSet из функции
|
|||
---|---|---|---|
#18+
Где-то в степиа хорошо ли возвращать из функции указатель на объект из кучи, для дальнейшего использования. иначе и не бывает. (о структурах сейчас не говорим) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2013, 15:38 |
|
Возврат DataSet из функции
|
|||
---|---|---|---|
#18+
Изопропил, так ну и что же я тут написал крамольного? "с точки зрения кода стек этой функции все равно поднимется в стек вызываемой" я могу в рабочей функции заменить функцию GetDataSet ее телом в ручную, и ничего не будет - антирефакторинг, или за меня это сделает компилятор ( как встройка). ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2013, 15:48 |
|
Возврат DataSet из функции
|
|||
---|---|---|---|
#18+
Где-то в степи"с точки зрения кода стек этой функции все равно поднимется в стек вызываемой" крамола в том, что на стеке вызываемой ничего не создаётся, ничего никуда не поднимается ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2013, 16:17 |
|
Возврат DataSet из функции
|
|||
---|---|---|---|
#18+
sutniИ вообще хорошая ли практика из функции возвращать объекты БД такие как DataSet, DataTable, DataRow? Нормальная практика. За исключением того, что DataSet - это собственно сам по себе "отражение" базы данных и ее возвращать его не очень правильно. А вот DataSet, считанный из XML - вполне нормально. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2013, 18:03 |
|
Возврат DataSet из функции
|
|||
---|---|---|---|
#18+
Cat2, Датасету всё равно, из базы он считан или из XML или руками слеплен. Для того и задуман был ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2013, 18:07 |
|
Возврат DataSet из функции
|
|||
---|---|---|---|
#18+
ИзопропилCat2, Датасету всё равно, из базы он считан или из XML или руками слеплен. Для того и задуман был Да. Но из базы напрямую DataSet не скачать. Вернее структуру - можно, а вот данные таблиц придется каждую отдельно закачивать ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2013, 18:30 |
|
Возврат DataSet из функции
|
|||
---|---|---|---|
#18+
Cat2Вернее структуру - можно, а вот данные таблиц придется каждую отдельно закачивать это проблемы конкретных адаптеров ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2013, 18:34 |
|
Возврат DataSet из функции
|
|||
---|---|---|---|
#18+
Cat2, у меня качается сразу ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2013, 18:48 |
|
Возврат DataSet из функции
|
|||
---|---|---|---|
#18+
ds=GetDataSet('select * from') переменная ds получит указатель на память в куче, в чем проблема то? когда количество ссылок на память будет=0, сборщик ее освободит. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2013, 20:30 |
|
Возврат DataSet из функции
|
|||
---|---|---|---|
#18+
ViPRosCat2, у меня качается сразу Ну, поделись знаниями. Какой функцией? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2013, 20:06 |
|
Возврат DataSet из функции
|
|||
---|---|---|---|
#18+
Cat2, LoadMacrotype :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2013, 20:14 |
|
Возврат DataSet из функции
|
|||
---|---|---|---|
#18+
ViPRosCat2, LoadMacrotype :) Поиск - "ничего не найдено" ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2013, 20:27 |
|
|
start [/forum/topic.php?fid=20&msg=38186816&tid=1404998]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 317ms |
total: | 452ms |
0 / 0 |