С C++ Builder на C# "Hello World!"
© Pavel
www.buildercpp.net.ru
Ну вот наконец немного руки добрались до C#.
Так как у нас тут большинство пишет под C++ Builder IDE, я приведу два исходных кода, для лёгкости понимания. Сначала на си под билде потом на си шарп под VS.NET
Пример будет традиционным Hello World.
Код:
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { ShowMessage("Hello World!"); } //---------------------------------------------------------------------------
Теперь си шарп.
Код:
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; namespace WindowsApplication1 { public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.Button button1; private System.ComponentModel.Container components = null; public Form1() { InitializeComponent(); } protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } private void InitializeComponent() { this.button1 = new System.Windows.Forms.Button(); this.SuspendLayout(); this.button1.Location = new System.Drawing.Point(64, 216); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(160, 24); this.button1.TabIndex = 0; this.button1.Text = "button1"; this.button1.Click += new System.EventHandler(this.button1_Click); this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(292, 273); this.Controls.Add(this.button1); this.Name = "Form1"; this.Text = "Form1"; this.ResumeLayout(false); } static void Main() { Application.Run(new Form1()); } private void button1_Click(object sender, System.EventArgs e) { MessageBox.Show("Hello World!"); } } }
Код на си шарп кажется больше, но это за счёт создания кнопки в нём.
Этот код VS генерирует автоматически при перетаскивании кнопки в проект. Поэтому он всегда под рукой и его всегда можно подправить.
И ещё не забывайте что отсутствуют всякие описатели типа unit1.h в си шарп класс находится в одном файле.
Ну вот такое маленькое вступление, для тех кто ещё не видел. Вопросы пишите в коменты.
Оставить комментарий
Комментарии
1.
+1 / -0
13 мая 2012, 23:39:49
using System;
using System.Collections.Generic;
using System.Text;
namespace hello
{
class Program
{
public static int Main()
{
Console.WriteLine("Hello word");
Console.ReadLine();
return 0;
}
}
}
using System.Collections.Generic;
using System.Text;
namespace hello
{
class Program
{
public static int Main()
{
Console.WriteLine("Hello word");
Console.ReadLine();
return 0;
}
}
}
2.
15 января 2007, 20:56:12
Конечно можно, просто надо как минимум прочесть (по ходу стучания по клаве) хотябы Г.Шилд "C# Учебный курс". Что не говори, а C# - чисто ООП - конструктор для формирования безнес задач на основе готовых Windows Components... Да, что-то добавлено нового. И может, так и надо реализовывать подход на сегодняшний день - коль живёте в MS Windows... А для души - UNIX. Я, если честно, не так давно (не давно) ради интереса решил написать промышленный проект на С# - трижды переписывал, пока не вехал, что это ООП среда, со всеми вытекающими последствимя, и следовательно, даже какой-то кайф поимел, от того, что всётаки теорию проектирования можно оказывается приминить на деле. Не могу сказать, на сколько устойчово это в промышленной среде ("24х7" - распределенная), посмотрим. Но унас реализуется проект (WEB решение, С#) уровня объединения - а это уже серьёзно.
А BUILDER - и колется и приходится, если что-то надо слепить за пару дней. Но бесит, столко хлама тащит за собой. Всю иерархию компонета... Как-то криво,и тяжко он ворочается, хотя, дело рук.. Delphi - разумный компромис.
А BUILDER - и колется и приходится, если что-то надо слепить за пару дней. Но бесит, столко хлама тащит за собой. Всю иерархию компонета... Как-то криво,и тяжко он ворочается, хотя, дело рук.. Delphi - разумный компромис.
3.
4 сентября 2006, 19:44:53
мда по C# тут совсем глухо, ничего действительно полезного...
4.
+1 / -0
1 августа 2006, 16:45:23
Статейки по C# откровенно слаабые тут.
И старые.
Аффтары какую-то хренотень пишут....
Вон уж скоро C#3.0 выйдет со встроенными сиквел предложениями.
И старые.
Аффтары какую-то хренотень пишут....
Вон уж скоро C#3.0 выйдет со встроенными сиквел предложениями.
5.
27 июня 2006, 12:06:33
Автор - явный поклонник С++ Builder... Но где же описание самой формы? Ах... его сгенеировала IDE, но студия справляется с этой задачей отнюдь не хуже + нет DFM файлов.
[CODE]
using System;
using System.Windows.Forms;
static class Program
{
static void Main()
{
Form frmMain = new Form();
Button btnMessage = new Button();
btnMessage.Text = "Message";
btnMessage.Click += new EventHandler(btnMessage_Click);
frmMain.Controls.Add(btnMessage);
Application.Run(frmMain);
}
static void btnMessage_Click(object sender, EventArgs e)
{
MessageBox.Show("Hello world");
}
}
[/CODE]
[CODE]
using System;
using System.Windows.Forms;
static class Program
{
static void Main()
{
Form frmMain = new Form();
Button btnMessage = new Button();
btnMessage.Text = "Message";
btnMessage.Click += new EventHandler(btnMessage_Click);
frmMain.Controls.Add(btnMessage);
Application.Run(frmMain);
}
static void btnMessage_Click(object sender, EventArgs e)
{
MessageBox.Show("Hello world");
}
}
[/CODE]
6.
8 января 2006, 20:06:42
А что, нельзя было на C# просто в тело main вставить
MessageBox.Show("Hello World!"); ????
Без всяких форм. Кстати, текст формы автогенерируемый - ничего писать не надо, просто вы его можете увидеть...
А вот TForm1 из первого примера почему то не приведен.
В общем мне кажется сравнение не корректное.
MessageBox.Show("Hello World!"); ????
Без всяких форм. Кстати, текст формы автогенерируемый - ничего писать не надо, просто вы его можете увидеть...
А вот TForm1 из первого примера почему то не приведен.
В общем мне кажется сравнение не корректное.
7.
14 декабря 2005, 12:52:17
На Java пример будет выглядеть так:
import java.awt.FlowLayout;
import java.awt.Dimension;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
/** Hellow world */
public class HelloWorld extends JFrame {
public HelloWorld() {
super("Form1");
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel contentPanel = (JPanel) getContentPane();
contentPanel.setLayout(new FlowLayout());
setSize(new Dimension(800, 600));
JButton button = new JButton("button1");
contentPanel.add(button);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Hello world!",
"Сообщение", JOptionPane.INFORMATION_MESSAGE);
}
});
}
public static void main(String[] args) {
HelloWorld helloWorld = new HelloWorld();
helloWorld.setVisible(true);
}
}
import java.awt.FlowLayout;
import java.awt.Dimension;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
/** Hellow world */
public class HelloWorld extends JFrame {
public HelloWorld() {
super("Form1");
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel contentPanel = (JPanel) getContentPane();
contentPanel.setLayout(new FlowLayout());
setSize(new Dimension(800, 600));
JButton button = new JButton("button1");
contentPanel.add(button);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Hello world!",
"Сообщение", JOptionPane.INFORMATION_MESSAGE);
}
});
}
public static void main(String[] args) {
HelloWorld helloWorld = new HelloWorld();
helloWorld.setVisible(true);
}
}
8.
14 декабря 2005, 12:42:37
re:Можно ли научиться программировать на С# не зная языков программирования, если ДА то где и как???
Можно.
Карли Ватсон, "С#", изд. Лори, 860 стр. на русском
Можно.
Карли Ватсон, "С#", изд. Лори, 860 стр. на русском
9.
15 июля 2005, 15:08:20
Код на сишарпе можно сделать и покороче сибилдеровского, у тебя очень много лишнего.
И не забывайте там ещё другие файлы всякие используются :)
И не забывайте там ещё другие файлы всякие используются :)
10.
18 мая 2005, 08:47:44
<blockquote><small>Цитата:<hr size=1>
И ещё не забывайте что отсутствуют всякие описатели типа unit1.h в си шарп класс находится в одном файле.[/quote]
- а теперь задумайтесь о сомнительном удобстве "описания класса, в т.ч. и членункций" в одном файле, если даже для "Hello World" о такой "маленький" ;)
И ещё не забывайте что отсутствуют всякие описатели типа unit1.h в си шарп класс находится в одном файле.[/quote]
- а теперь задумайтесь о сомнительном удобстве "описания класса, в т.ч. и членункций" в одном файле, если даже для "Hello World" о такой "маленький" ;)
11.
18 апреля 2005, 12:48:52
Можно научится програмированиеси шарп не зная языков програмирование.Скажите какой web и каким методами.
12.
21 марта 2005, 11:37:24
У меня вопрос: Можно ли научиться программировать на С# не зная языков программирования, если ДА то где и как (какая литература или web@..) ???
13.
20 февраля 2005, 09:06:04
На CVI все равно короче хоть и там есть самогенерирующие кнопки.