Залепа №3. Майкрософт - антиглобалист!
Автор будет очень признателен, если Вы кликнете по одной из белых ссылок выше.
Вам это ничего не стоит, а автору сайта будет приятно ;)
C# - мега-объектно-ориентированный язык. Настолько ориентированный, что создатели решили насовсем отказаться от глобальных объектов, хотя в классическом ООП на этот счет нет таких строгих правил.
Смысл этого отказа остается непонятным - без глобальных объектов просто невозможно написать ни одной программы, в крайнем случае хотя бы один объект но все же будет глобальным. Например объект, представляющий само приложение :)
Но давайте лучше рассмотрим КАК это выглядит на практике.
Думаю, никто не будет спорить, что в любой программе есть функции, не привязанные к какому-то определенному объекту, т.е. по-сути глобальные (например та же Main()). Так же есть и объекты, не являющиеся членами других объектов, т.е. тоже глобальные. В C# глобальных объектов быть не может, поэтому вышеописанные пасажиры насильно всунуты в классы-обертки, а свою истинную глобальность выдают только наличием волшебного слова "Static".
Но объясните мне, дураку, в чем такое мега-отличие между обычной глобальной переменной от той же переменной с атрибутом static и засунутой в псевдо-класс, который представляет собой просто бесполезную оболочку?
Скажете - это для разделения, чтоб не возникало конфликтов имен? Но чем гениев из мелкософта не удовлетворили обычные (и именно для этого и созданные!) пространства имен? Ну разве это:
namespace MyVariables
{
int a, b, c;
void ThisIsMyFunc(string par) {...};
}хуже чем это:
namespace MyNamespace
{
public class МойНафигЗдесьНеНужныйКласс
{
public static int a,b,c;
public static void ThisIsMyFunc(string par) {...};
}
}Меня пол-часа бил истерический хохот, когда я впервые увидел вот эту супер-ООП-конструкцию:
static class Program
{
static void Main(){...}
}Может в мелкософте ЭТО считают вершиной своих достижений, мне же кажется, что ЭТО - просто чушь.
в жабе так же, разберитесь потом гоните )
момф (16 июля 2009, 10:30)В .NET есть глобальные переменные, хотите - пишите на IL.
А вообще комментарии какого-то ребенка переростка.
билли (26 ноября 2009, 05:15)ой) А написано что все поля обязательны для заполнения...
билли (26 ноября 2009, 05:16)
Полность согласен. Что отсутствии глобальных функций и переменных, констант - чушь в C#. Казалось небольшое отличие от C++, но как мешает
(22 октября 2008, 12:27)