Вход на сайт
Хочу научится
NEW 15.08.09 11:38
По-существу тебе уже сказали.
По сравнению с С++ дополнительные трудозатраты заключаются в указании " : IDisposable", написание тела void Dispose() будем считать за написание деструктора в С++.
В ответ на:
using System;
class C : IDisposable
{
public void UseLimitedResource()
{
Console.WriteLine("Using limited resource...");
}
void IDisposable.Dispose()
{
Console.WriteLine("Disposing limited resource.");
}
}
class Program
{
static void Main()
{
using( C c = new C() )
{
c.UseLimitedResource();
}
Console.WriteLine("Now outside using statement.");
Console.ReadLine();
}
}
По сравнению с С++ дополнительные трудозатраты заключаются в указании " : IDisposable", написание тела void Dispose() будем считать за написание деструктора в С++.
Dropbox - средство синхронизации и бэкапа файлов.
NEW 15.08.09 11:42
Мурр, концепт смарт-поинтеров заключается не в предоставлении метаинформации об инкапсулируемом объекте (хотя их можно и для этого расширить), а в предоставлении прозрачного доступа к нему.
в ответ Murr 14.08.09 23:56
В ответ на:
То, что ниже smart pointer.
То, что ниже smart pointer.
В ответ на:
std::has_virtual_destructor<typeof(*ptr)>::value => true/false
std::has_virtual_destructor<typeof(*ptr)>::value => true/false
Мурр, концепт смарт-поинтеров заключается не в предоставлении метаинформации об инкапсулируемом объекте (хотя их можно и для этого расширить), а в предоставлении прозрачного доступа к нему.
Dropbox - средство синхронизации и бэкапа файлов.
NEW 15.08.09 11:45
в ответ voxel3d 15.08.09 11:38
В ответ на:
По сравнению с С++ дополнительные трудозатраты заключаются в указании " : IDisposable", написание тела void Dispose() будем считать за написание деструктора в С++.
спасибо. видно доп.затраты всего одна строчка. приемлемо.По сравнению с С++ дополнительные трудозатраты заключаются в указании " : IDisposable", написание тела void Dispose() будем считать за написание деструктора в С++.
Проклят нарушающий межи ближнего своего (Втор.27:17)
NEW 15.08.09 11:59
в ответ anly 15.08.09 11:45
Мне самое большое неудобство в С#, в сравнении с С++, доставило отсутствие множественного наследования классов. С деструкторами-"недеструкторами из С++" неудобства нет.
Народ ещё жалуется на низкую производительность .Net и GC в частности на больших используемых объёмах памяти, но я не упирался в это ни разу, так и не понял, врут или нет.
Народ ещё жалуется на низкую производительность .Net и GC в частности на больших используемых объёмах памяти, но я не упирался в это ни разу, так и не понял, врут или нет.
Dropbox - средство синхронизации и бэкапа файлов.
15.08.09 13:28
в ответ anly 15.08.09 00:48
Выше уже писали об уровне владения.
Но суть в том, что даже using не является обязательным - объект будет удален GC когда это будет возможно. От программиста вообще не требуется об этом заботится - создал, использовал и забыл.
В Шарпе объекты без new не создаются. Есть статические объекты, доступ к конструкторам и методам которых возможен без new, но и об них корректно заботится GC.
Но суть в том, что даже using не является обязательным - объект будет удален GC когда это будет возможно. От программиста вообще не требуется об этом заботится - создал, использовал и забыл.
В Шарпе объекты без new не создаются. Есть статические объекты, доступ к конструкторам и методам которых возможен без new, но и об них корректно заботится GC.
NEW 15.08.09 13:58
Это работает в том случае, если компайлер предоставляет поддержку. Типа так: http://msdn.microsoft.com/en-us/library/ms177194%28VS.80%29.aspx или так http://gcc.gnu.org/onlinedocs/gcc/Type-Traits.html
При чём тут два указателя - мне совершенно непонятно.
в ответ Murr 15.08.09 13:35
В ответ на:
Хммм... понимаю, что на смарт-поинтере это работает.
Но как это должно работать на двух простых указателях на один и тот же объект - не представляю.
Хммм... понимаю, что на смарт-поинтере это работает.
Но как это должно работать на двух простых указателях на один и тот же объект - не представляю.
Это работает в том случае, если компайлер предоставляет поддержку. Типа так: http://msdn.microsoft.com/en-us/library/ms177194%28VS.80%29.aspx или так http://gcc.gnu.org/onlinedocs/gcc/Type-Traits.html
При чём тут два указателя - мне совершенно непонятно.
NEW 15.08.09 14:22
в ответ scorpi_ 15.08.09 13:58
При чём тут два указателя - мне совершенно непонятно.
-----
При том, что "удобство" С++ деструктора сводится на нет при необходимости
отслеживать количество существующих указателей на объект.
Ссылка на Managet C++ с его CLR несколько некорректна - CLR практически уравнивает
Шарп с Плюсами в .NET...
Гнусню версию пока не смотрел.
-----
При том, что "удобство" С++ деструктора сводится на нет при необходимости
отслеживать количество существующих указателей на объект.
Ссылка на Managet C++ с его CLR несколько некорректна - CLR практически уравнивает
Шарп с Плюсами в .NET...
Гнусню версию пока не смотрел.
NEW 15.08.09 15:11
shared_ptr/weak_ptr в помощь.
А если повнимательнее прочитать?
в ответ Murr 15.08.09 14:22
В ответ на:
При том, что "удобство" С++ деструктора сводится на нет при необходимости отслеживать количество существующих указателей на объект.
При том, что "удобство" С++ деструктора сводится на нет при необходимости отслеживать количество существующих указателей на объект.
shared_ptr/weak_ptr в помощь.
В ответ на:
Ссылка на Managet C++ с его CLR несколько некорректна - CLR практически уравнивает Шарп с Плюсами в .NET...
Ссылка на Managet C++ с его CLR несколько некорректна - CLR практически уравнивает Шарп с Плюсами в .NET...
А если повнимательнее прочитать?