С 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 все равно короче хоть и там есть самогенерирующие кнопки.
