static в C-шарп, зачем он нужен?

Статус: Offline
Реєстрація: 10.04.2011
Повідом.: 869
static в C-шарп, зачем он нужен?

Вот не могу разобраться со static, зачем он нужен и когда его нужно использовать? MSDN прочитал, но не сильно понял. Понял что, если класс static, то объект этого класса создать нельзя, а смысл тогда а таком классе, что он может делать? Если про static классы вроде чуть понятно, то про static методы переменные и т.п, вообще нечего не понял...
 
Останнє редагування:
Вот еще почитал и понял что для вызова метода не требуется ссылки на объект. А вот с переменными не понятно.
 
мда... может пока не поздно поучить что-то другое
 
static в C-шарп, зачем он нужен?
Затем же, где и везде.

Вот еще почитал и понял что для вызова метода не требуется ссылки на объект. А вот с переменными не понятно.

Что не понятно? Для обращения к переменной точно так же не требуется ссылки на объект.
 
Замени слово статический на "класса" (или типа). То есть метод класса, переменная класса. То есть относится она не к экземляру типа, а к самому типу.

Где и как используется - примеров куча в базовых типах.
 
Замени слово статический на "класса" (или типа). То есть метод класса, переменная класса. То есть относится она не к экземляру типа, а к самому типу.

Где и как используется - примеров куча в базовых типах.

Мне тут в ЛС, и я понял. Остался только вопрос. Если мы объявляем статический конструктор он должен написан быть первым в классе, а потом обычный? При вызове я понял что статический конструктор должен выполнятся до любого конструктора экземпляра.
 
Если мы объявляем статический конструктор он должен написан быть первым в классе, а потом обычный?
Пофиг.

При вызове я понял что статический конструктор должен выполнятся до любого конструктора экземпляра.
Нет. Статический конструктор вызовется автоматически при первом обращении к типу.
 
Вот не могу разобраться со static, зачем он нужен и когда его нужно использовать? MSDN прочитал, но не сильно понял. Понял что, если класс static, то объект этого класса создать нельзя, а смысл тогда а таком классе, что он может делать?
В объектно-ориентированной парадигме статики используются для объявления методов-коллекторые по сути являются обычными функциями - тобишь не имеют привязки к конкретному набору данных. Например тебе нужен метод который генерирует случайное число - он не связан ни с каким конкретным экземпляров данных, посему он объявавляется как статик, его можно вызвать не создавая экземпляр класса.
Статик классы - классы в которых могут быть только статик данные - по сути это коллекторы статических функций.

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

Вот не могу разобраться со static, зачем он нужен и когда его нужно использовать? MSDN прочитал, но не сильно понял. Понял что, если класс static, то объект этого класса создать нельзя, а смысл тогда а таком классе, что он может делать? Если про static классы вроде чуть понятно, то про static методы переменные и т.п, вообще нечего не понял...
смотри все просто: вся статика присутствует в пределах домена (пока считай программы) в одном экземпляре и как бы сразу сама инициализирована, динамика же наоборот создавать можно сколько хочешь и каждый раз нужно, собственно, создавать экземпляры, вот такого понимания тебе на первое время хватит с головой

придумать такой пример чтобы все было однозначно сложновато... ну допустим у тебя есть фтп-сервер, который может обслуживать только одного клиента единовременно, а если лезет много, то он сильно страдает, ты, конечно, можешь создать динамического посредника между фтп-сервером и логикой программы, но вот знаешь точно что эта программа будет только для конкретно этого сервера и самое важное чтобы сервер стабильно работал, поэтому тут вполне подойдет статика и все выглядт вот так: фтп <-> статический посредник <-> много запросов от разных клиентов

если бы не было одного посредника то множество запросов могло бы насоздавать много и посредников и сервер бы упал, вот как-то так, пример, конечно, аховый и решается это не так, но для понимания годится
 
Назад
Зверху Знизу