Здравствуйте, Aquila, Вы писали:
J>>Если не хочешь подключать namespace (как во втором варианте) — вполне нормально. Естественно, обычно используют подключение namespace работы с формами.
J>>Что ты пытаешься доказать? Что даже показ MessageBox'a в .Net является сложной задачей?
A>Наоборот, я хочу доказать, как приятно, легко и просто программировать под него! Набираем System.Windows.Forms.MessageBox.Show("Hello world"); и выскакивает симпатичное окошко с приветственной надписью!
Представляешь!
А еще можно делать так:
List<string> names = new List<string>();
names.Add("Dave");
names.Add("John");
names.Add("Abe");
names.Add("Barney");
names.Add("Chuck");
string abe = names.Find(name =>
name.Equals("Abe"));
Console.WriteLine(abe);
Что там у нас в C++ было для этого? Ах, да... boost::lambda.
Можно и так:
var someVariable = new SomeClass();
Что делает? На этапе компиляции автоматически определяется тип переменной.
И так тоже можно:
public Form1()
{
InitializeComponent();
button1.Click += delegate(object sender, EventArgs e)
{
// The following code is part of an anonymous method.
MessageBox.Show("You clicked the button, and " +
"This is an anonymous method!");
};
}
И даже так можно:
var query =
from c in listOfCustomers
where c.City == "Sarasota"
select new {c.Name,c.City};
и таки да! это все еще C#, compile-time, intellisense и т.д. все плюшки наши!
Да уж куда там .NET до C/C++. Подумаешь, кому нужны рефлексия (как следствие O/RM`ы, модульное тестирование, IoC и т.д. и т.д.), свойства, атрибуты, лямбда-выражения, анонимные методы, делегаты, итераторы, linq, версионность сборок (дружно машем ручкой dll-hell`у) и многое-многое другое...
Костыли типа того же boost для C++ наверно от хорошей жизни придумывают, да?