LINUX.ORG.RU

C#, mono и Windows.Forms


0

0

Окно с графиками - пример из книги, уже скомпилированный автором в Visual Studio. Запущен через mono prog.exe

Разработчики mono-project к версии 1.2 обещают поддержку Windows.Forms Однако, уже сейчас можно запускать и разрабатывать некоторые простенькие формочки.

http://www.mono-project.com/Mono_Project_Roadmap
http://www.mono-project.com/WinForms

В остальном, консольные приложения уже давно кросс-платформенны. Личные ощущения: C# прост, удобен, и лёгок в изучении.

Wallpaper: http://patialvi.com/images/team-work.jpg

>>> Просмотр (1024x768, 152 Kb)

★★★★

Проверено: Demetrio ()

Столько кода для одного hello world'а? хм...

php-coder ★★★★★
()

А чем определяется наличие или отсутствие this в этом коде? Ведь Text по плану это такое же свойство класса, как и myButton, но только унаследованное от родителя. Так почему this.Text а myButton без this? Просто интересно, C# не знаю.

Swappp
()
Ответ на: комментарий от Swappp

Ему пофиг. Можно писать и так, и так. Но только стоит придерживаться какого-то одного метода написания :)

kka
()

Ну что за мода замазывать скрины =)

linux_newbe
()
Ответ на: комментарий от Selecter

А myButton не относится к myForm?

Извини, просто в данном случае нет необходимости использовать оператор
this и так понятно, что все те элементы относятся к myForm, 
а зачем вносить лишнию сложность чем проще тем лучше. 

Модификаторы доступа использудтся в случаях, когда без них не обойтись.

Я использую this в основном только в случае если в функцию передается
параметор с именем уже определенным в классе: 

class {
  private String str = null ;

  setText(String str) {this.str = str ; }

}

gapik
()

А что за редактор/среда разработки? Собственная Mono?

И ещё, скажите, пожалуйста, а только меня раздражает окончание .exe (нет я не фанатик "не-Windows", но смотрится это в юниксе весьма странно...)?

xlex
()

а #c# - это тот, который на руснете?

anonymous
()

>Личные ощущения: C# прост, удобен, и лёгок в изучении

Яву ты видать не смотрел? C# - практически точная копия явы, отличия весьма косметические (хотя среди них есть довольно удобные).

anonymous
()

..не нужен

anonymous
()
Ответ на: комментарий от anonymous

>> А чем это лучше python + PyQt?

да хотя бы виртуальной машиной

anonymous
()

Спасибо за скриншот! Лучше анти-рекламы этому поделию (.net и mono вместе взятых) не придумаешь.

Итак, все разом посмотрели на скриншот. Запомнили ключевую фразу - ".net/mono".

Потом, посмотрели на KDE/Gnome/e.t.c. Запомнили ключевую фразу "C/C++".

Теперь сравним функциональность програм написанных на .net/mono и с/с++. Картина ясна.

p.s. это относится не только к mono, но и к чистому .Net от Майкрософта. .Net - глобальная PR-акция с целью заработать кучу денег на продаже воздуха, не более.

logIN
()
Ответ на: комментарий от logIN

>Спасибо за скриншот! Лучше анти-рекламы этому поделию (.net и mono вместе взятых) не придумаешь. Итак, все разом посмотрели на скриншот. Запомнили ключевую фразу - ".net/mono". Потом, посмотрели на KDE/Gnome/e.t.c. Запомнили ключевую фразу "C/C++". Теперь сравним функциональность програм написанных на .net/mono и с/с++. Картина ясна. p.s. это относится не только к mono, но и к чистому .Net от Майкрософта. .Net - глобальная PR-акция с целью заработать кучу денег на продаже воздуха, не более.

Полностью солидарен....

Ip0 ★★★★
()
Ответ на: комментарий от gapik

>Присоединяюсь к вопросу. Просто тогда логичнее писать super.Text, т.к.
все же он определен в родителе.

super это Java. А чтобы вызвать метод родителя в C# используется base.
Хотя от этого суть не меняется. :)))

gelios
()
Ответ на: комментарий от logIN

>Итак, все разом посмотрели на скриншот. Запомнили ключевую фразу - ".net/mono". >Потом, посмотрели на KDE/Gnome/e.t.c. Запомнили ключевую фразу "C/C++".

"Хелло, Ворлд" человека начавшего изучать что-то и громадный не первый год разрабатываемый проект, могут сравнивать только пионэры. Пиши ещё очень интересные и глубокомысленные сообщения.

eRazor ★★★
()
Ответ на: комментарий от the_coder

>Мужики! Стоит C# учить?

Стоит как минимум для общего развития. Чем больше технологий знаешь,
тем больше понимаешь.
Лично мне C# как язык нравится. Много приятностей есть.

gelios
()
Ответ на: комментарий от gelios

С# для общего развития а Java на хлеб с икоркой.

anonymous
()
Ответ на: комментарий от eRazor

>"Хелло, Ворлд" человека начавшего изучать что-то

Ты не понял. Это *единственное* на что способен mono, в частности и .net в общем.

logIN
()

Как тут уже справедливо замечали, С# не что иное, как форк жабы мелкомягкими.. хотя внутренняя реализация и несколько иная... но по сути то.. а изучать стоит, не помешает, для общего кругозора...

MiracleMan ★★★★★
()
Ответ на: комментарий от MiracleMan

Ага, а Линукс это форк Виндовса. Или наоборот. Ничё что внутренняя реализация другая, а по сути-то.. Один хрен -- операционная система..

eRazor ★★★
()
Ответ на: комментарий от logIN

Нда.. я даже не знаю, что тебе сказать. Слушай, мне интересно, ты прикалываешься так? Ну хорошо, рассакжи, что теоретически в дотнете сделать нельзя? Ты не подумай, я не фанат дот нета и С#, С++ я люблю гораздо больше в силу субъективных пристрастий, но про дот нет ты говоришь вообще глупость.

На, посмотри и открой для себя Америку: http://www.devexpress.com/Products/NET/XtraGrid/

Видишь на страничке картинку? Это на чистом С# под дот нет написано. И это не работает со скоростью паровоза. Это работает вполне нормально.

Кстати, мы про гуй-приложения говорим или если нет, тебе нужен пример из какой-то специфичной области, чтобы увидеть, что под дот нет можно писать?

eRazor ★★★
()
Ответ на: комментарий от eRazor

Нет, Линукс - это форк Миникса и как следствие, одно из подмножеств семейства юниксовых! ;-) нельзя историю забывать! а виндовз - это комерческое решение, причем далеко не лучшее... ;-P

MiracleMan ★★★★★
()
Ответ на: комментарий от eRazor

Не знаю как он, а лично я, под это, и ,на этом, писал... очень привлекательная идеология, довольно удобно и универсально, но.... всё это лишь в рамках одной операционной системы (думаю, вы догадыватесь, какой).. вообщем, это их личное дело, аналогов много,... и, лично я, никогда не стал бы, всего лишь из-за того, тем более, что и не менее удобных аналогов в достатке, привязывать себя к подобным зависимостям, хотя, знанние - сила.. ;-)

MiracleMan ★★★★★
()
Ответ на: комментарий от logIN

>Гуляй

А ты хам. И, похоже, не очень умный, раз хамить начал.

Я тебе привёл пример не просто компонентов, а достаточно сложных компонентов. Сложных достаточно, чтобы провести параллель между ними и любым другим гуй-приложением.

А ты кроме того, что сказал о том, что с использованием моно в часности и дот нета в целом, ничего написать нельзя, ничего не сказал. Ты даже не потрудился дать определение "полноценным приложениям". Это называется -- пукнуть в лужу и нахамить.

Иногда я начинаю понимать создателей линукссакса утверждающих, что основной континдент здесь -- хамы и пионэрия.

eRazor ★★★
()
Ответ на: комментарий от eRazor

> Видишь на страничке картинку? Это на чистом С# под дот нет написано. И это не работает со скоростью паровоза. Это работает вполне нормально.

блин, вообще даже медленней паровоза :-) но это, скорее вопрос реализации, а с твоим мнением согласен, хоть джава и больше нравится.

sakura-obscura
()
Ответ на: комментарий от logIN

>Ты не понял. Это *единственное* на что способен mono, в частности и .net в общем.

Почему же? http://www.mono-project.com/Software

Вот не hello world - http://www.zone.ee/selecter/Csharp/new_file.cs
Не смейтесь только над моими поделиями - сами такие раньше стряпали. Его копия на С++
http://www.zone.ee/selecter/C++/treugolniki.cc

Две проги одинаково выполняют задачи. В C# не пришлось даже задумываться о правильном создании динамических массивов. К тому же, по ходу портирования проги на C#, нашёл ошибку выхода за пределы индекса (index out of bounds). C++ компилятор, разумеется, молчал. Чем плохи плюсы клона Java - C#, когда речь идёт о получении конечного результата легко, быстро и качественно без ошибок?

Selecter ★★★★
() автор топика
Ответ на: комментарий от Selecter

Напиши шаблон массива хоть динамического, хоть какого, хоть свой маленький GOOGLE к нему прикрути . Проверяй что хочешь хоть выход за пределы хоть отдельно для массива стрингов а не пытаются ли вбить матерные стринги. Хоть архивируй на ходу. Вот и будут тебе удобства C++.

anonymous
()
Ответ на: комментарий от Selecter

> http://ronware.org/reva.html
> reva 9776 byte
> reva < gtk.f

: loaded? if0 ." failed loading the library" cr 0 src ! then ;

" libgdk.so" lib gdk	| necessary for gtk to load
" libgtk.so" lib gtk gtk loaded?

" gtk_init" 2 gtk func gtk_init
" gtk_window_new" 1 gtk func gtk_window_new
" gtk_widget_show" 1 gtk func gtk_widget_show
" gtk_main" 0 gtk func gtk_main
" gtk_main_quit" 0 gtk func gtk_main_quit
" gtk_signal_connect" 4 gtk func gtk_signal_connect
" gtk_signal_connect_object" 4 gtk func gtk_signal_connect_object
" gtk_button_new_with_label" 1 gtk func gtk_button_new_with_label
" gtk_container_add" 2 gtk func gtk_container_add

0 variable hwnd
0 variable button
0 constant GTK_WINDOW_TOPLEVEL

noname:
	gtk_main_quit
	; 2 10 cb: destroy

0 0 gtk_init ." Init GTK: " .	| initialize gtk
GTK_WINDOW_TOPLEVEL gtk_window_new hwnd !
hwnd @ z" destroy" ' destroy 0 gtk_signal_connect drop
z" Hello world!" gtk_button_new_with_label button !

button @ z" clicked" 
	" gtk_widget_destroy" gtk (func)
	hwnd @ gtk_signal_connect_object drop

hwnd @ button @ gtk_container_add drop
button @ gtk_widget_show drop
hwnd @ gtk_widget_show drop
gtk_main drop

." See 'ya later!" cr

bye

anonymous
()
Ответ на: комментарий от anonymous

Вот аналогичный код на Smalltalk-e:

| shell button | shell := CwTopLevelShell createApplicationShell: 'Hello' argBlock: nil. button := shell createPushButton: 'Привет :)' argBlock: nil. button manageChild. shell realizeWidget.

Ну и где проще?

anonymous
()
Ответ на: комментарий от anonymous

> Вот аналогичный код на Smalltalk-e:

> | shell button | shell := CwTopLevelShell createApplicationShell: 'Hello' argBlock: nil. button := shell createPushButton: 'Привет :)' argBlock: nil. button manageChild. shell realizeWidget.

А сколько мегабайт весит C#, mono и Windows.Forms?

Сколько мегабайт весит Smalltalk?

А, вот, reva весит 9776 byte

> Ну и где проще?

Ну и где компактней?

anonymous
()
Ответ на: комментарий от anonymous

две капли hello-word`а ;-)
оба "хелла" весят поменьше Mono,
оба кроссплатформенные..оба работают в Unicode..
Ну и куда можно применить C-за-решеткой ?

*** tcl/tk :
#!/bin/tclsh 
package require Tk 
button .hello -text "Hello word!" -command {puts "Really hello"}
pack .hello 
tkwait window .

*** c++ Qt :
#include <QApplication.h>
#include <QButton.h>
int main(int argc,char *argv[]) {
 QApplication *app;
 QButton *hello;
 app=new QApplication(&argc,argv);
 hello=new QButton(NULL,"Hello word!");
 hello->show();
 app->setMainWidget(hello);
 return app->exec();
}

anonymous
()

.NET - платформа для разработки распределенных ИС. И J2EE тоже. Хватит сравнивать .NET с языками программирования.

anonymous
()
Ответ на: комментарий от Selecter

>http://www.mono-project.com/Software

Это опять издевка? Ну нафига давать ссылки, которые так легко можно
об*ср*ть? Что мы видим на странице? Пару десятков проектов, сделанных такими же зомбированными как и Мигель. Вот выдержки:
"ChronoJump is a method for measuring strength in jumping (also useful for running mesuration)."
"Imendio Blam! is a rss-news aggregator especialy good for reading planet-feeds like Planet Gnome."

Да таких поделий и на VB сделано уйма. Это вообще ни о чем не говорит. Хотя отчасти подтверждает именно мои слова.

>К тому же, по ходу портирования проги на C#, нашёл ошибку выхода
>за пределы индекса (index out of bounds). C++ компилятор,
>разумеется, молчал.

Как правильно заметили выше, если бы ты пользовался действительно С++, а не С, то проблем с индексами у тебя не было в принципе. Think iterators, dude. И выучи досконально хоть *один* язык пр-я. То ты в форуме задаешь вопрос про изучение С++, а через неделю про C#, а потом говоришь "когда речь идёт о получении конечного результата легко, быстро и качественно без ошибок". Как ты можешь такое говорить, если ты даже теоретически не можешь это сравнивать?


logIN
()
Ответ на: комментарий от eRazor

>А ты хам. И, похоже, не очень умный, раз хамить начал.

Я далеко не хам, но меня злит, когда люди подсовывают откровенную лажу. Ты дал заведомо хреновый проект, я потерял время.

>Иногда я начинаю понимать создателей линукссакса утверждающих,
>что основной континдент здесь -- хамы и пионэрия.

Это сказал Irsi? Да Бог с ним. ESR говорит совсем другое:

"Much of what looks like rudeness in hacker circles is not intended to give offence. Rather, it's the product of the direct, cut-through-the-bullshit communications style that is natural to people who are more concerned about solving problems than making others feel warm and fuzzy."

Читай классиков.

logIN
()

Опять фанатики засрали хорошую тему...

Что касается лично logIN, то не мог бы сей господин предоставить ссылку на свой законченный проект? А то уж больно лихо он тут пытается рассуждать о достоинтвах и недостатках различных языков программирования, причем довольно слабо разбираясь в самом предмете :)

anonymous
()
Ответ на: комментарий от anonymous

2anonymous (*) (17.04.2005 14:49:29)

> Опять фанатики засрали хорошую тему...

Чего сказать-то хотел? Иль деферамбов C# & Windows.Forms не увидел?

И, с каких это пор, обсуждение, с примерами использования _различного_ инструментария, в контексте некоторой задачи, считается плохим тоном и "засиранием" темы?

И почему это "фанатики"? Иль тебе известен, только, один язык программирования/метод решения?

P.S. А переход на личности, это -- не "засирание" темы?

anonymous
()
Ответ на: комментарий от anonymous

>Опять фанатики засрали хорошую тему...

Во-во! Даже когда .NET (и C# в частности) будет успешным в бизнесе, эти фанатики будут продолжать искать себе работу в поисках применения своих невостребованных рынком языков.

2logIN: Что касается моего изучения программирования, пусть тебя это не беспокоит. Ничто не мешает мне изучать сразу 3 языка: Python, C++ и C#.

Selecter ★★★★
() автор топика
Ответ на: комментарий от Selecter

>Во-во! Даже когда .NET (и C# в частности) будет успешным в бизнесе,

Этого не будет. Нельзя синтезировать технологию. Технологии сами появляются, тогда когда они становятся востребованы. MS синтезировало .net ради денег, ради того чтобы ударить по Sun, ради сохранения лица в судебном деле "MS vs. Java". К сожалению, ты клюнул на их удочку, но время все расставит по своим местам.

>Ничто не мешает мне изучать сразу 3 языка: Python, C++ и C#.

И не один из них ты не знаешь досконально. Выучить синтаксис и вникнуть в культуру языков - разные вещи. C, C++, perl, Pyton, Ruby, Smalltalk, Tcl создавались с огромным багажом философии, разных подходов к написанию кода. В сумме, у этих языков разная идеология, культура. Ты можешь знать синтаксис хоть ста языков, но применять эффективные методы не факт, что сможешь хоть в одном.

Ты это хорошо продемонстрировал это на своем .cc файле. Объясни, зачем ты его вообще назвал .cc? Зачем ты этот файл компилируешь С++ компилятором? Там нету *ничего* С++ специфичного. Замени объекты чтения из файла на fopen/fread/getline, new на malloc и ты получишь чистый С! Вот - это не знание культуры программирования С++. Хотя я, конечно, согласен, что на таком маленьком коде трудно задействовать многие C++ технологии, но как пример - показательно.

А C# язык чисто синтетический, он не имеет культуры программирования, его не писали для решения проблем существующих языков, его просто писали. Ради денег, ради того, чтобы ты потратил время на его изучение.

logIN
()
Ответ на: комментарий от anonymous

> Иль деферамбов C# & Windows.Forms не увидел?

А почему бы и нет, если штука того стоит. Тот же C# и Windows.Forms разрабатывался и до сих пор совершенствуется людьми весьма профессиональными и эрудированными. Эта технология отлично подходит как для очень ограниченных программистов, так и для настоящих профи. Ничего плохого не вижу в таком сочетании.

Что касается "примеров использования _различного_ инструментария", то я здесь не заметил ничего кроме нелепых придирок в сторону .NET. Мне самому ужасно не нравится ни Gtk# [вместе с Гномом], ни MonoDevelop, но мне нравится сама технология .NET.

Может быть, для некоторых само название Microsoft - все равно, что красный цвет для быка. Но разве это и не есть фанатизм в чистом виде?

Что касается примеров удачных проектов на .NET, то один из так - Avalon/XAML. Огромный проект с удивительно мощным потенциалом на будущее.

P.S. В прошлом посте старался быть более мягким, но разве следующие слова одного замечательного автора не заслуживают звания детского сада для любого, кто по-настоящему имел бы дело с C/C++: ".. если бы ты пользовался действительно С++, а не С, то проблем с индексами у тебя не было в принципе. Think iterators, dude. .."

P.P.S. Был интересный пример с фортом. Только важно понять, что размер исполняющей системы, будь то компактная форт-машина или навороченный CLR из .NET, совсем не важен, или почти не важен для большинства задач. :)

P.P.P.S. "Hello World" - это не тот случай, на котором нужно сравнивать языки программирования или даже языковые платформы (к последним я бы отнес и Форт).

anonymous
()
Ответ на: комментарий от anonymous

И чем же эти примеры так сильно отличаются от следующего?

--- TestForm.cs ---

using System;
using System.Windows.Forms;

public class TestForm {

public TestForm() {

Label label = new Label();
label.Text = "Hello World!";

this.Controls.Add (label);
}

[STAThread]
public static void Main (string[] args) {
Application.Run (new TestForm());
}
}

anonymous
()
Ответ на: комментарий от logIN

>И не один из них ты не знаешь досконально.

Досконально, впрочем, я не собираюсь вникать ни в один из них.

>Ты это хорошо продемонстрировал это на своем .cc файле.

Придирка, да и только. С vs C++ ария. Зачем мне заморочки с malloc, когда на С++ можно всё это сделать легче и получить такой же производительный результат? Признаюсь также, я ещё не начинал читать Thinking in C++ и Строуструпа.

>Этого не будет. Нельзя синтезировать технологию. Технологии сами появляются, тогда когда они становятся востребованы. MS синтезировало .net ради денег, ради того чтобы ударить по Sun, ради сохранения лица в судебном деле "MS vs. Java". К сожалению, ты клюнул на их удочку, но время все расставит по своим местам.

Я так не думаю. Поддержка корпорации уже даёт большой толчок в распространении продукта. MS только лишь создала конкурента в виде .NET для Java. Вот и посмотрим кто из них выживет. Без поддержки маркетинга python, очень наглядно демонстрирует свою нераспространённость в мире реального бизнеса. И это печально, но факт. А мне Python очень даже по душе.

Selecter ★★★★
() автор топика
Ответ на: комментарий от logIN

Чтобы тебе "лажу" не подсовывали, надо было сказать критерии мифического "настоящего приложения". А не сравнивать DE (KDE, Gnome) и платформу, что является полнейшей профанацией.

А что касаемо твоего времени, децкий сад ей богу. Давай не будем рассказывать чьё время сколько стоит, а то может статься, что в лужу сядешь. Впрочем, если ты такой занятой, не буду время твоё впредь отнимать.

>Это сказал Irsi?

Читать умеет Благородный Дон, чьё-время-дорого? Линукссакс было написано, Ирси там не было.

eRazor ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.