Форум: "Прочее";
Текущий архив: 2015.01.18;
Скачать: [xml.tar.bz2];
ВнизDelphi and C# Найти похожие ветки
← →
Minsk City (2014-06-05 13:41) [0]На нашем рынке труда C# гораздо востребованнее Delphi, поэтому решил изучать новую технологию.
Сильно ли отличается C# от Object Pascal и сколько времени потребует перейти на него? Отличается ли принципиально MS Visual Studio от Delphi/RAD Studio?
← →
antonn © (2014-06-05 13:49) [1]на шарпе вольготней (очень просто сбыдлокодить работающий продукт), если любил over-ООП на дельфи - в шарпе будешь чувствовать себя хорошо. А после шарпа не далеко и до явы.
я с дельфи7 на шарп пересел примерно за месяц-два (так как надо было уже через месяц приступать к задаче, то прочитал даже пол книжки Вильямся "программирование на дотнет 2005"), но у меня была неслабая мотивация и довольно интересная задача (выданная для теста и позднее ушедшая в продакшн), и при этом почти полная неприязнь к ООП (максимум - инкапсуляция). А если учить "для себя" чтобы потом предложить себя как спеца - фигня выйдет, скорее всего.
← →
й (2014-06-05 13:53) [2]> Сильно ли отличается C# от Object Pascal
нет, основные отличия - тип впереди переменной, "{" и "}" вместо "begin" и "end" и кавычки двойные, ну и так еще, по мелочам
> сколько времени потребует перейти на него?
10-30 минут (на скачку и установку VS)
> Отличается ли принципиально MS Visual Studio от Delphi/RAD Studio?
да, но общего больше, чем отличий
← →
DVM © (2014-06-05 15:42) [3]
> Сильно ли отличается C# от Object Pascal
Сильно, но есть и большое множество очень похожих черт.
> и сколько времени потребует перейти на него?
Кроме языка понадобится ознакомится с содержимым огромного фреймворка, в котором стопицот тыщ классов. Кроме этого придется ознакомится со множеством технологий WPF, WCF и т.д. и т.п для реальной эффективной работы. Понадобится время на изучение ассортимента имеющихся сторонних библиотек, компонентов разного рода инструментов типа решарпера и прочего.
Да много еще чего. Весь этот опыт можно получить реально работая с этим языком. Одной книжкой не обойтись.
← →
Михалыч (2014-06-05 18:22) [4]Обычно клиенту пофигу на чем написана программа, главное чтобы делала то что надо... ;)
← →
Юрий Зотов © (2014-06-05 18:30) [5]> DVM © (05.06.14 15:42) [3]
А с джавы? Языки схожи, библиотеки, вроде как, тоже. По идее, не такой уж сложный переход должен быть. Или я чего-то не учитываю?
← →
Павиа (2014-06-05 19:37) [6]
> А с джавы? Языки схожи, библиотеки, вроде как, тоже. По
> идее, не такой уж сложный переход должен быть. Или я чего-
> то не учитываю?
Фреймворк у C# свой. Точно также как свой у VC++, GCC, Builder C++ , так и у JAVA. У JAVA там тоже куча своих технологий.
← →
DVM © (2014-06-05 22:06) [7]
> Юрий Зотов © (05.06.14 18:30) [5]
> А с джавы? Языки схожи, библиотеки, вроде как, тоже.
Наверное, чуть легче. Поверхностно все си-подобные языки похожи в плане синтаксиса. Главное на эту похожесть не слишком полагаться, начинаешь копать вглубь все по разному выходит. И фреймворк все равно изучать придется.
← →
Пит (2014-06-07 18:28) [8]все концепции у ЯВУ схожи. Дельфи концептуально очень неплохой язык. Самой большой новостью для меня стало то, что в C# (как и в большинстве ЯП) конструкторы не наследуются по умолчанию, это считай фишка дельфи.
А так да, синтаксис чуть другой, но это фигня. Основное время - изучение стандартных методик, библиотек, общепринятых практик и т.д.
Уже через месяц после первого знакомства я писал программу с использованием рефлексии, делегатов и прочее, куча терминов - а принципы уже знакомые.
Что радуем - стабильность среды, я почти отвык нажимать CTRL+S, хотя мое знакомство то буквально 2-3 месяца.
← →
Ega23 © (2014-06-07 18:40) [9]
> Самой большой новостью для меня стало то, что в C# (как
> и в большинстве ЯП) конструкторы не наследуются по умолчанию,
> это считай фишка дельфи.
Я что-то пропустил?
← →
sms (2014-06-07 22:12) [10]а как понять то что конструкторы наследуются ?
← →
Palladin © (2014-06-07 22:31) [11]это понять так, что фабрики объектов нужных классов писать в много раз круче
гуглить по словам "виртуальные конструкторы delphi" + class of
← →
jack128_ (2014-06-07 22:57) [12]
> конструкторы не наследуются по умолчанию, это считай фишка
> дельфи
Точно. TFileStream.Create(10); то что дельфи не может отловить эту ошибку в компил тайм - это её фишка
← →
Пит (2014-06-08 10:29) [13]
> Я что-то пропустил?
откуда я знаю.
Назови ЯП в котором конструкторы наследуются, кроме Дельфи?
← →
sms (2014-06-08 11:24) [14]вот код (c#):
class A
{
public int dummy;
public A() { dummy = 100; }
}
class B : A
{
public string show()
{
return dummy.ToString());
}
}Console.WriteLine(new B { }.show());
тут "носледовался", или не о том вопрос ?
← →
jack128_ (2014-06-08 12:12) [15]
> ут "носледовался", или не о том вопрос ?
Если у предка есть конструктор без параметров, и у потомка нету пользовательских конструкторов, то компилятор генерирует конструктор без параметров для потомка. Но это не тоже самое, что наследование.
← →
Пит (2014-06-08 13:51) [16]sms, чтобы проиллюстрировать слова Жэка, вот класс:
class A
{
public int dummy;
public A(int ADummy) { dummy = ADummy; }
}
...
class B : A
...
Ты не сможешь сделать:... = new B(10);
← →
Пит (2014-06-08 14:53) [17]Удалено модератором
Примечание: Рекомендую не нарушать правила форума
← →
Ega23 © (2014-06-08 16:41) [18]
> Назови ЯП в котором конструкторы наследуются, кроме Дельфи?
Я честно пытался тебя понять. Но не понял.
Что именно ты имеешь ввиду?
← →
Пит (2014-06-08 17:04) [19]
> Я честно пытался тебя понять. Но не понял.
ну Олег, ты чо. Смотри, допустим ты объявил конструктор:
TMyClassA = ...
constructor MyConstructor(blabla: TTopolya);
...
end;
...
TMyClassB = class(TMyClassA)
...
Очевидно, что у TMyClassB будет конструктор с именем MyConstructor, верно? Унаследован он от класса предка TMyClassA.
Ты к этому привык, что конструктор наследуется как и любой другой метод. Это идеология Delphi.
В большинстве других известных языков наследования конструкторов нету! То есть, объявляя TMyClassB - у него не будет конструктора MyConstructor. Если хочешь отнаследовать все конструкторы - можешь их переобъявить с перевызовом (inherited в понятиях дельфи) метода класса предка.
← →
antonn © (2014-06-08 20:15) [20]
> inherited в понятиях дельфи
а через base это не то?
← →
Пит (2014-06-08 21:39) [21]Удалено модератором
← →
DVM © (2014-06-08 22:01) [22]
> Пит (08.06.14 17:04) [19]
Определенная логика в этом есть. Конструктор базового класса вообще говоря не умеет конструировать наследников. Это дает гарантию некоторую, что все поля наследника будут проинициализированы верно. Базовый класс не знает о этих полях ничего.
← →
DVM © (2014-06-08 22:05) [23]Кроме этого, даже иногда вредно иметь конструктор унаследованный от предка. Допустим классу наследника необходимо передать какой то параметр в конструктор, что и сделано в его конструкторе, а класс предка такой параметр не принимает в конструкторе и само конструирование класса наследника без этого параметра не имеет смысла.
← →
Ega23 © (2014-06-08 22:53) [24]
> Допустим классу наследника необходимо передать какой то
> параметр в конструктор, что и сделано в его конструкторе,
> а класс предка такой параметр не принимает в конструкторе
> и само конструирование класса наследника без этого параметра
> не имеет смысла.
Если статичный - ну заводишь какой надо параметр, только потом не забыть inherited впаять.
Если virtual - ну тогда reintroduce.
И я продолжаю решительно недоумевать, о чём вообще "спор".
← →
Пит (2014-06-08 23:10) [25]
> Определенная логика в этом есть.
ээ, собственно эта логика применена во всех популярных ЯП, окромя дельфи.
Вот в них так, а вот в дельфи по другому. Только об это и шла речь, читайте сначала.
← →
jack128_ (2014-06-08 23:54) [26]
> Если статичный - ну заводишь какой надо параметр, только
> потом не забыть inherited впаять.
Я ж привел пример пример с FileStream"ом, где такой прием не работает.
> Если virtual - ну тогда reintroduce.
Угу, вот и вылазят потом ошибки в ран-тайм в случайных местах.TA = class
public
constructor Create; virtual;
end;
TAClass = class of TA;
TB = class(TA)
public
constructor Create(I: Integer); reintroduce;
end;
var
Cl: TAClass;
begin
Cl := TB;
.....
Cl.Create; // Оп-с. А конструтор TB, то и не вызвался. С нетерпением ждем тикет с AV в трекере.
end;
← →
Пит (2014-06-09 00:30) [27]Удалено модератором
← →
Пит (2014-06-09 01:34) [28]Удалено модератором
← →
Ega23 © (2014-06-09 07:27) [29]Удалено модератором
← →
jack128_ (2014-06-09 10:27) [30]Удалено модератором
← →
Ega23 © (2014-06-09 10:47) [31]Удалено модератором
← →
jack128_ (2014-06-09 11:27) [32]Абсолютно неверная аналогия. В этом твоем NOCOUNT, как я понимаю, есть возможность и включить и выключить эту опцию по желанию программиста. В дельфе я не могу запретить наследование конструкторов.
← →
Пит (2014-06-09 16:10) [33]
> В этом твоем NOCOUNT
это отключение / включение посылки уведомления на клиента информации о том, сколько записей выбрано. Если в хранимке несколько SELECT"ов - это может сильно замедлить работы по связи с клиентом туда сюда.
А так ты все правильно сказал.
← →
Пит (2014-06-09 16:11) [34]Удалено модератором
← →
Ega23 © (2014-06-09 16:34) [35]
> Если в хранимке несколько SELECT"ов - это может сильно замедлить
> работы по связи с клиентом туда сюда.
Это не столько замедляет работу, сколько не гарантирует того, что нужный тебе рекордсет придёт первым.
> а в остальных популярных языках наследования конструкторов нету.
Я тут посидел, в старых исходниках порылся. В общем, я там конструкторы без параметров использовал.
← →
Пит (2014-06-09 16:54) [36]
> Я тут посидел, в старых исходниках порылся. В общем, я там
> конструкторы без параметров использовал.
интересная фраза. Ты про ЯП отличный от дельфи?
Тогда это явная ошибка, интересно почему ты не заметил. В конструкторе без параметров можно ошибиться и подумать, что тот же C# наследует конструкторы, но в реальности он не наследует, при отсутствии конструкторов он создает "пустой" конструктор.
Таким образом, ты можешь подумать, что отнаследовался конструктор без параметров от предка, а на самом деле неявно создался новый конструктор, который ничего не делает, то есть по крайней мере не вызывает конструктор предка.
← →
ТНЕ картман (2014-06-09 18:13) [37]да какая разница, наследуется-не наследуется? Вечно фигню перетираете))
← →
han_malign (2014-06-10 12:20) [38]
> наследуется-не наследуется?
- в Delphi нет конструкторов и деструкторов, а есть специальные мета-методы которые магически вызывают NewInstance{InitInstance} и FreeInstance{CleanupInstance}...
То есть - синтаксический сахар для TurboPascal-евсково
new(TmyObject, TmyObject.init)/dispose(pObject,TmyObject.done)...
← →
han_malign (2014-06-10 12:32) [39]а в C# и иже с ним - все еще запущенней:
http://www.transl-gunsmoker.ru/2012/09/blog-post.html
← →
Пит (2014-06-10 14:26) [40]
> а есть специальные мета-методы которые магически вызывают
> NewInstance{InitInstance} и FreeInstance{CleanupInstance}.
> ..
и называются конструкторы и деструкторы.
В других языках как то также.
← →
sms (2014-06-10 18:03) [41]
> который ничего не делает, то есть по крайней мере не вызывает
> конструктор предка.
а в моем примере делает :)
← →
Пит (2014-06-10 21:03) [42]
> а в моем примере делает :)
в посте [14] ?
Не должна переменная инициализироваться числом 100 при вызове new B
← →
Inovet © (2014-06-10 21:57) [43]> [42] Пит (10.06.14 21:03)
Это что же получается, если я не написал дефолтный конструктор и явно не вызвал конструктор предка, то кирдык инициализации объекта? Ужас.
← →
Romkin © (2014-06-11 10:51) [44]
> В большинстве других известных языков наследования конструкторов
> нету!
Надо говорить "в большинстве известных мне..."
Objective-C и Python следят за тобой с интересом :)
← →
Пит (2014-06-11 11:04) [45]
> Надо говорить
а как ты интерпретировал слово "в большинстве"? )
← →
Romkin © (2014-06-11 11:19) [46]
> а как ты интерпретировал слово "в большинстве"? )
Как неточность. "в большинстве известных". Сейчас все больше языков с метаклассами среди популярных, на мой взгляд.
← →
Inovet © (2014-06-11 11:37) [47]> [43] Inovet © (10.06.14 21:57)
> > [42] Пит (10.06.14 21:03)
Уффф, отлегло
class CA
{
int v;
public:
CA() {v = 1234567;}
CA(int Val) {v = Val;}
GetVal() {return v;}
};
class CB : public CA
{
public:
CB() {;}
CB(int Val) : CA(Val) {;}
};
int _tmain(int argc, _TCHAR* argv[])
{
CB b1;
CB b2(2345678);
printf("b1 = %i, b2 = %i", b1.GetVal(), b2.GetVal());
getchar();
return 0;
}
Вывод:
b1 = 1234567, b2 = 2345678
Или ты об чём?
← →
Пит (2014-06-11 11:48) [48]
> b1 = 1234567
и как ты это объяснишь? Ты же явно объявил у CB конструктор, который ничего не делает, в том числе не вызывает конструктор предка (Base) или в понятиях дельфи не делает inherited, почему же тогда произошла инициализация переменной?
Может Jack128 придет и объяснит...
← →
han_malign (2014-06-11 12:05) [49]
> в том числе не вызывает конструктор предка
- конструктор - на то и конструктор, что вызывается всегда - для каждого включаемого класса, в том числе - включаемого по наследованию...
Внесите "пустой" конструктор базового класса в private секцию - и будет вам полное просветление...
← →
Inovet © (2014-06-11 12:20) [50]> [48] Пит (11.06.14 11:48)
> и как ты это объяснишь?
Ну так вызывается же, надо в стандарте смотреть точные формулировки
class CA
{
int v;
public:
CA() {v = 1234567; printf("CA()\n");}
CA(int Val) {v = Val; printf("CA(int Val)\n");}
GetVal() {return v;}
};
class CB : public CA
{
public:
CB() {printf("CB()\n");}
CB(int Val) : CA(Val) {printf("CB(int Val)\n");}
};
int _tmain(int argc, _TCHAR* argv[])
{
CB b1;
CB b2(2345678);
printf("b1 = %i, b2 = %i", b1.GetVal(), b2.GetVal());
getchar();
return 0;
}
Вывод:
CA()
CB()
CA(int Val)
CB(int Val)
b1 = 1234567, b2 = 2345678
← →
Пит (2014-06-11 12:22) [51]
> конструктор - на то и конструктор, что вызывается всегда
> - для каждого включаемого класса
ниче не понял. А я слышал мнение, что в дельфи конструктор предка вызовется, если только inherited написать
← →
Romkin © (2014-06-11 12:35) [52]Delphi вызывает NewInstance, а дальше код конструктора. Есть вызов предка - вызовется. Точная ситуация как и с обычным методом. Но почему-то явный вызов inherited в виртуальном методе не беспокоит, а вот в конструкторе вызывает недоумение.
← →
Пит (2014-06-11 12:54) [53]
> Вывод:
>
> CA()
> CB()
удивительно. Еще и конструктор CA первым вызвался. Я не понимаю, почему. Может кто пояснит.
← →
Inovet © (2014-06-11 14:08) [54]> [53] Пит (11.06.14 12:54)
> Я не понимаю, почему
Ну так базовый класс должен быть инициализирован, прежде чем наследник будет что-то там с его и со своими данными делать.
← →
Inovet © (2014-06-11 14:12) [55]А, ну ты может про это
CB(int Val) : CA(Val) {printf("CB(int Val)\n");}
так если сделать так
CB(int Val) {printf("CB(int Val)\n");}
то тоже вызовется дефолтный
CA()
.
Мало ли чего и зачем мы там передали в
CB(int Val)
← →
Пит (2014-06-11 14:24) [56]
> так если сделать так
> CB(int Val) {printf("CB(int Val)\n");}
> то тоже вызовется дефолтный
> CA()
а вот почему?!?!
Такого уже даже и в дельфи нету, чтобы вызвать метод у предка всегда нужно фигачить Inherited.
← →
Пит (2014-06-11 14:25) [57]ничего не понимаю
← →
jack128_ (2014-06-12 22:09) [58]
> а вот почему?!?!
а почему когда ты вызываешь TMyObject.Create() вызывается не только тело конструктора Create, но и InitInstance ? Потому что так решили разработчики языка.
← →
картман © (2014-06-12 22:57) [59]
> han_malign (10.06.14 12:20) [38]
>
>
> > наследуется-не наследуется?
>
> - в Delphi нет конструкторов и деструкторов, а есть специальные
> мета-методы
да какая разница-то? Есть язык, пишешь в соответствии с его спецификой - все. Дальше все одинаковое, хоть дельфи, хоть си шарп, хоть что угодно. Бухгалтерия все та же.
← →
Пит (2014-06-13 19:26) [60]
> Потому что так решили разработчики языка.
>
подожди, ты же сам мне объяснял...
Почему в примере [50] вызывается конструктор CA вообще?!
Вроде я так понял, что должен вызваться конструктор именно того класса, который и создается. Если нет ни одного объявленного конструктора - то создается конструктор по умолчанию без параметров, который ничего не делает по сути (кроме внутренней магии).
А из примера видно, что несмотря на объявленный конструктор - СНАЧАЛА вызывается конструктор предка... Что это вообще такое?! Какая тогда логика вызова всё таки в шарпе?
← →
ухты (2014-06-13 19:40) [61][50] это не шарп, но в шарпе тоже самое
← →
Inovet © (2014-06-13 21:22) [62]> [60] Пит (13.06.14 19:26)
> Какая тогда логика вызова всё таки в шарпе?
Ну, как уже замечено, это не шарп, но смысл то же. Помню, у меня непонимание возникло в одном вопросе по физике после лекции. Вот вроде понятно всё, а не понятно зачем оно надо. Ну и чё - между парами в курилке возле лифта спросил об этом курильщиков, затягиваясь сам отравой, - Чё это вообще за нафиг? Так один мне объясинл на пальцах за 1 минуту, но я нифига не понял, а другой объяснил ещё за одну минуту, и я уже понял.
И мы пошли на следующее занятие вооружонные знанием.
Да. Наверное этот пост тоже политически окрашен и будет удалён?
← →
jack128_ (2014-06-14 01:00) [63]
> Что это вообще такое?! Какая тогда логика вызова всё таки
> в шарпе?
Перед вызовом конструктора класса вызывается конструктор базового класса. Всегда. Если не указано явно какой именно конструктор базового класса нужно вызвать, то вызывается конструктор по умолчанию(=конструктор без параметров). Если конструктор по умолчанию недоступен(его нету, или он объявлен в предке как private), то будет ошибка компиляции.
← →
Пит (2014-06-14 10:13) [64]Блин а я был уверен, что как и в дельфе конструкторы предка надо вызывать только вручную...
← →
Пит (2014-06-14 16:30) [65]
> Перед вызовом конструктора класса вызывается конструктор
> базового класса
подожди, Жень... А если я хочу реализовать дельфовое поведение?
Допустим, при создании моего класса TB, который я отнаследовал от TA - я хочу, чтобы сначала получил управление я, что-то нашаманить, может даже получить данные по сети или типа того, а потом уже вызвать конструктор базового класса TA, передав динамически полученные параметры, как это сделать?
На примере шарпа, допустим
← →
jack128_ (2014-06-14 16:46) [66]На примере плюсов:
class A {
public:
A(int data){}
};
class B: A {
public:
B(): A(GetDataFromNetwork()){}
int x = 10;
private:
static int GetDataFromNetwork() {
return 1;
}
};
← →
Пит (2014-06-14 18:35) [67]хитрооо ))
← →
DVM © (2014-06-14 19:22) [68]
> Пит (14.06.14 16:30) [65]
> А если я хочу реализовать дельфовое поведение?
> На примере шарпа, допустим
вот тут обсуждали http://www.rsdn.ru/forum/dotnet/3428511.flat там и jack128 и григорьев :)
← →
Внук © (2014-06-14 20:16) [69]>>Пит (11.06.14 14:24) [56]
type
TA = class
private
FFoo: string;
...
public
constructor Create;
end;
...
constructor TA.Create;
begin
FFoo := "Bar";
end;
procedure SomeMethod;
var
A: TA;
begin
A := TA.Create; // Конструктор предка будет вызван без всяких inherited
...
end;
← →
jack128_ (2014-06-14 20:21) [70]2Внук ?? Какого предка ??? Tobject что ли? Нет, не будет вызван.
← →
brother © (2014-06-14 20:32) [71]Я не понимаю о чем сыр-бор:
type
TA = class
private
FFoo: string;
public
constructor Create;
end;
TB = class(TA)
constructor Create;
end;
...
constructor TA.Create;
begin
FFoo := "Bar";
end;
constructor TB.Create;
begin
inherited; // вызываем конструктор предка класса
FFoo := "Bar2";
end;
...
var
B: TB;
begin
b:= TB.Create;
end;
если inherited не делать, то конструктор TA вызван не будет...
← →
brother © (2014-06-14 20:46) [72]ps. конструктор Tobject вызван не будет...
← →
brother © (2014-06-14 20:49) [73]> Допустим, при создании моего класса TB, который я отнаследовал
> от TA - я хочу, чтобы сначала получил управление я, что-
> то нашаманить, может даже получить данные по сети или типа
> того, а потом уже вызвать конструктор базового класса TA,
> передав динамически полученные параметры, как это сделать?constructor TB.Create;
begin
шаманим первые)
inherited;
end;
← →
Внук © (2014-06-14 20:52) [74]>>jack128_ (14.06.14 20:21) [70]
Да. Не то написал. Имел в виду, что объект будет корректно создан без вызова конструктора предка. Вобщем, ерунду написал.
← →
ухты (2014-06-14 23:56) [75]static и "чтобы сначала получил управление я", как бы не одно и тоже
в паблик static вывести и "шамать" перешамань
← →
Пит (2014-06-15 04:04) [76]Удалено модератором
← →
ухты (2014-06-15 08:32) [77]Удалено модератором
← →
Предавший Паскаль (2014-06-15 09:41) [78]Где-то слышал такое выражение:
"Delphi - он добрый. :)".
Все что не он, агрессоры.
← →
Пит (2014-06-15 12:16) [79]
> На примере плюсов:
Жень, а если я хочу создать класс-наследник с конструктором без параметров и чтобы СНАЧАЛА мой конструктор получил управление, а потом уже вызвать конструктор предка?
← →
jack128_ (2014-06-15 19:22) [80]Зачем?
← →
Пит (2014-06-16 01:04) [81]то есть, вопрос нерешаем?
← →
jack128_ (2014-06-16 11:10) [82]Ну понимаешь, это вопрос сродни тому, как получить доступ к strict private полю в чужом классе и тд. Потенциально можно. Но не нужно.
← →
Пит (2014-06-16 21:52) [83]ну опять же, например, провести предварительную работу и в случае несовпадения звезд вызвать исключение, недопустив инициализации конструктора предка для экономии времени (как вариант).
← →
jack128_ (2014-06-16 22:03) [84]А конструктор без параметров ? То есть проверять нужно некое глобальное состояние ?
Плюс прервать создание объекта ты можешь только подняв исключение, что само по себе уже очень "дорогая" операция ?
На первый взгляд, самый простой вариант, это просто запретить создание объекта через конструтор. Пусть кому надо создает его через стат. метод. А в этом методе уже можно что угодно наворотить.
← →
Пит (2014-06-17 10:20) [85]
> А конструктор без параметров ? То есть проверять нужно некое
> глобальное состояние ?
ну например конструктор базового класса лезет в интернет и что-то считывает. Если соединения нету - то все зависает минут на 5. А я в своем конструкторе могу быстро определить, что интернета нету, ну как вариант.
← →
ухты (2014-06-17 10:23) [86]это плохое проектирование :)
← →
Пит (2014-06-17 11:52) [87]Удалено модератором
← →
KilkennyCat © (2014-06-18 10:23) [88]Немного не в тему, но про шарп :)
кто-нибудь использовал SharpDeveloper?
http://www.icsharpcode.net/opensource/sd/
← →
KilkennyCat © (2014-06-19 14:55) [89]SharpDeveloper. первые сутки работы оставляют меня в восхищении.
← →
ухты (2014-06-19 18:06) [90]так а в чем разница от экспресс студии?
← →
KilkennyCat © (2014-06-19 18:31) [91]сама среда удобнее. После делфи в студии мне было очень тяжело работать. В шарпдевелопере - намного легче.
плюс:
малый "вес".
никакой регистрации для загрузки.
ничего лишнего.
моментальный запуск.
для англопроблемных - русификация.
исходники.
Страницы: 1 2 3 вся ветка
Форум: "Прочее";
Текущий архив: 2015.01.18;
Скачать: [xml.tar.bz2];
Память: 0.68 MB
Время: 0.039 c