BG Development


Страници: (24) « първа ... 20 21 [22] 23 24   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> С/С++ - Как да започнем
DarkOne
Публикувано на: 27-08-2019, 09:37
Quote Post


Group Icon
Име: Александър Петков
Група: Администратор
Ранг: Почетен член

Мнения: 3733
Регистриран на: 30.01.04



QUOTE (Gamma Goblin @ 27-08-2019, 09:33)
QUOTE
A local object of an IDisposable type is created, but the object is not disposed before all references to the object are out of scope.


Как разбира кога всички указатели са out of scope ? Преоткирват finalize() в джавата май.

Не, "finalize" го има откакто съществува C# (нарича се деструктор и се декларира както в C++, изпълнява се когато обектът се освобождава от garbage collector-a), все пак в началото беше копие на Java. Тук става въпрос за анализ на потока на изпълнение при компилация.


--------------------
The man who learns only what others know
is as ignorant as if he learns nothing.
The treasures of knowledge are the most rare,
and guarded most harshly.
-- Chronicle of the First Age
PMICQ
Top
stewie
Публикувано на: 27-08-2019, 09:40
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 7350
Регистриран на: 14.07.16



QUOTE (DarkOne @ 27-08-2019, 10:18)
Всъщност деструкторът го вкарват в C# 8. Казва се using declaration и прави методът за освобождаване на ресурса да се извика автоматично като излизаш от scope:
CODE
static void WriteLinesToFile(IEnumerable<string> lines)
{
   using var file = new System.IO.StreamWriter("WriteLines2.txt");
   foreach (string line in lines)
   {
       if (!line.Contains("Second"))
       {
           file.WriteLine(line);
       }
   }
// file is disposed here
}
Още преди години изказах прогноза, че C# бавно но сигурно ще се превърне в С++ и се оказвам прав. Всяка нова версия на езика добавя неща, които ги има в С++ под някаква форма.

Dispose е различно от деструктор, или правилно казано в. нет
- финализатор. Няма нищо общо с на ц пляс пляс хуйните. Този начина на ползване дето го слагаш като пример - кога ще се викне. Dispose()? Като няма скоуп в метода или скоупа е целият метод ми се вижда просто модерна глупост за хора, които искат по-малко скоби. От поне 3 години не съм виждал нещо полезно като нововъведение в c#, май много веган гееве с тротинетка ядящи кълнове въртят новите идеи.

Това мнение е било редактирано от stewie на 27-08-2019, 09:45
PM
Top
DarkOne
Публикувано на: 27-08-2019, 09:44
Quote Post


Group Icon
Име: Александър Петков
Група: Администратор
Ранг: Почетен член

Мнения: 3733
Регистриран на: 30.01.04



Аз го нарекох деструктор, защото Ребата визира use case-a на Dispose, когато говори за автоматичното викане на деструктора в С++. В примерът има коментар кога ще се извика Dispose - също когато би се извикал деструкторът в С++. Иначе целта е да се намалят вложените scope-ове на using, да.

Това мнение е било редактирано от DarkOne на 27-08-2019, 09:46


--------------------
The man who learns only what others know
is as ignorant as if he learns nothing.
The treasures of knowledge are the most rare,
and guarded most harshly.
-- Chronicle of the First Age
PMICQ
Top
Gamma Goblin
Публикувано на: 27-08-2019, 10:15
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 4014
Регистриран на: 21.02.18



QUOTE (DarkOne @ 27-08-2019, 09:44)
Аз го нарекох деструктор, защото Ребата визира use case-a на Dispose, когато говори за автоматичното викане на деструктора в С++. В примерът има коментар кога ще се извика Dispose - също когато би се извикал деструкторът в С++. Иначе целта е да се намалят вложените scope-ове на using, да.

добре де , ако тоя обект го реферират 5 треда, как компилатора ще разбере кога да го викне ?

Ако го викне когато в ц++, то ще имаш "use after free"

Това мнение е било редактирано от Gamma Goblin на 27-08-2019, 10:16
PMEmail PosterUsers Website
Top
DarkOne
Публикувано на: 27-08-2019, 10:18
Quote Post


Group Icon
Име: Александър Петков
Група: Администратор
Ранг: Почетен член

Мнения: 3733
Регистриран на: 30.01.04



Този обект е локална променлива в метод. В случая ще се викне при излизане от метода. Няма нишки или ако има, те са на горно ниво и всяка работи с отделен обект, създаден локално във функцията.

Това мнение е било редактирано от DarkOne на 27-08-2019, 10:20


--------------------
The man who learns only what others know
is as ignorant as if he learns nothing.
The treasures of knowledge are the most rare,
and guarded most harshly.
-- Chronicle of the First Age
PMICQ
Top
Gamma Goblin
Публикувано на: 27-08-2019, 10:22
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 4014
Регистриран на: 21.02.18



аз питам ако го подам на някоя нишка какво ще стане
PMEmail PosterUsers Website
Top
DarkOne
Публикувано на: 27-08-2019, 10:26
Quote Post


Group Icon
Име: Александър Петков
Група: Администратор
Ранг: Почетен член

Мнения: 3733
Регистриран на: 30.01.04



Ако обектът трябва да живее извън текущият scope (ако няма да изчакаш нишката в тази функция) няма да използваш using declaration (doh!). Ще го освобождаваш където е подходящо за неговия lifetime.


--------------------
The man who learns only what others know
is as ignorant as if he learns nothing.
The treasures of knowledge are the most rare,
and guarded most harshly.
-- Chronicle of the First Age
PMICQ
Top
Gamma Goblin
Публикувано на: 27-08-2019, 11:02
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 4014
Регистриран на: 21.02.18



QUOTE (DarkOne @ 27-08-2019, 10:26)
Ако обектът трябва да живее извън текущият scope (ако няма да изчакаш нишката в тази функция) няма да използваш using declaration (doh!). Ще го освобождаваш където е подходящо за неговия lifetime.

пак не ми отговори на въпроса, какво ще стане ако съм написал юзинг и съм го пуснал в някаква нишка
PMEmail PosterUsers Website
Top
SuN
Публикувано на: 27-08-2019, 11:13
Quote Post


Group Icon
Име:
Група: Администратор
Ранг: Почетен член

Мнения: 13463
Регистриран на: 27.01.05



QUOTE (Gamma Goblin @ 27-08-2019, 11:02)
QUOTE (DarkOne @ 27-08-2019, 10:26)
Ако обектът трябва да живее извън текущият scope (ако няма да изчакаш нишката в тази функция) няма да използваш using declaration (doh!). Ще го освобождаваш където е подходящо за неговия lifetime.

пак не ми отговори на въпроса, какво ще стане ако съм написал юзинг и съм го пуснал в някаква нишка

Аз не пиша такива неща. icon_redface.gif В джавата не знам как ви учат.


--------------------
Само аз не троля.
Всички коментари са плод на художествена измислица и нямат общо с действителни и недействителни лица, събития и факти.
PMEmail Poster
Top
Дон Реба
Публикувано на: 27-08-2019, 11:36
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 10496
Регистриран на: 11.11.06



QUOTE (Gamma Goblin @ 27-08-2019, 11:02)
QUOTE (DarkOne @ 27-08-2019, 10:26)
Ако обектът трябва да живее извън текущият scope (ако няма да изчакаш нишката в тази функция) няма да използваш using declaration (doh!). Ще го освобождаваш където е подходящо за неговия lifetime.

пак не ми отговори на въпроса, какво ще стане ако съм написал юзинг и съм го пуснал в някаква нишка

ще стане гигантска черна дупка и вселената ще изчезне icon_smile.gif
нищо особено няма да стане разбира се, целия ти любим линукс е написан на чисто С, където можеш да си пращаш каквито искаш поинтери към когото иска, и после да ги изтриеш без да се обадиш. ау ама как така, ами ей на, бачка ли линукса - бачка.
PM
Top
0 потребители преглеждат тази тема в момента (0 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (24) « първа ... 20 21 [22] 23 24  Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0