- •Основы c#. Урок 1. Что такое c#?
- •Основы c#. Урок 2. Что такое net Runtime?
- •Основы c#. Урок 3. Первая программа на c#
- •Основы c#. Урок 4. Переменные языка c#
- •Основы c#. Урок 5. Логические операторы
- •Основы c#. Урок 6. Массивы в c#
- •Основы c#. Урок 7. Операторы if и switch
- •Основы c#. Урок 8. Циклы for и foreach
- •Основы c#. Урок 9. Цикл while
- •Основы c#. Урок 10. Классы в c#
- •Основы c#. Урок 11. Конструкторы классов
- •Основы c#. Урок 12. Наследование
- •Основы c#. Урок 13. Запись в экземпляр базового класса экземпляра производного
- •Основы c#. Урок 14. Вложенные классы
- •Основы c#. Урок 15. Перегрузка бинарных операторов
- •Основы c#. Урок 16. Перегрузка унарных операторов
- •Основы c#. Урок 17. Область видимости
- •Основы c#. Урок 18. Виртуальные функции
- •Основы c#. Урок 19. Абстрактные классы
- •Основы c#. Урок 20. Запрещение наследования или модификатор sealed
- •Основы c#. Урок 21. Статические переменные
- •Основы c#. Урок 22. Статические методы класса
- •Основы c#. Урок 23. Статические конструкторы
- •Основы c#. Урок 24. Закрытые конструкторы или классы без экземпляров
- •Основы c#. Урок 25. Передача параметров переменой длины
- •Основы c#. Урок 26. Строки (класс System.String)
- •Основы c#. Урок 27. Строки (класс StringBuilder)
- •Основы c#. Урок 28. Передача параметров по ссылке и по значению (ref и out)
- •Основы c#. Урок 29. Пример передачи по ссылке
- •Основы c#. Урок 30. Перегрузка
- •Основы c#. Урок 31. Функции класса System.Array
- •Основы c#. Урок 33. События
- •Основы c#. Урок 35. Введение в атрибуты
- •Основы c#. Урок 36. Пример пользовательского атрибута.
- •Основы c#. Урок 37. Параметры командной строки
- •Основы c#. Урок 38. Метод Main в отдельном классе
- •Основы c#. Урок 39. Форматированный вывод
- •Основы c#. Урок 40. Класс System.Object
- •Основы c#. Урок 41. Методы класса System.Object
- •Основы c#. Урок 42. Переопределяем методы класса System.Object
- •Основы c#. Урок 43. Константы
- •Основы c#. Урок 44. Модификаторы доступа
- •Основы c#. Урок 45. Ссылка на текущий экземпляр класса (this)
- •Основы c#. Урок 47. Работаем со специальными папками
- •Основы c#. Урок 48. Получаем список всех дисков
- •Основы c#. Урок 49. Ввод/вывод в c# (System.Io)
- •Основы c#. Урок 50. Классы для работы с папками и файлами
- •Основы c#. Урок 51. Класс Directory
- •Основы c# Урок 52. Класс File
- •Основы c# Урок 53. Класс FileSystemInfo
- •Основы c# Урок 54. Класс DirectoryInfo
- •Основы c# Урок 55. Перечисление FileAttributes
- •Основы c# Урок 56. Класс FileInfo
- •Основы c# Урок 57. Пример: получение имен всех подпапок
Основы c#. Урок 20. Запрещение наследования или модификатор sealed
На прошлом уроке мы рассмотрели абстрактные классы. Их основное назначение - быть предками для других классов. На другом конце иерархии стоят так называемые sealed-классы. От них нельзя производить другие классы. Синтаксис для тах такой же, как и для обычных классов, за исключением ключевого слова sealed. Вот пример:
...
sealed class MyClass
{
//Методы и переменные класса
intx;
...
}
class MyClass2: MyClass //Ошибка!
{
...
}
...
Как вы видите, от sealed-класса MyClass нельзя делать классы-потомки.
Основы c#. Урок 21. Статические переменные
Обычно переменные класса принадлежат конкретному экземпляру класса. Для обращения к таким переменным мы пишем что-то вроде
MyClass z;
k=z.data;
Здесь переменная data принидлежит классу MyClass. Для каждого экземпляра класса она своя.
Наряду с обычными переменными существуют и статические переменые класса. Их основное отличие от обычных переменных в том, что они относятся к классу целиком. Т. е. на все экземпляры класса у нас есть только одна переменая. Получить доступ к такой переменой можно только для самого класса без создания его экземпляра. Через конкретный же экземпляр класса доступа к такой перемнной нет. Т. е. использовать такую статическую переменную можно только для самого класса без создания экземпляра.
Для объявления переменной статический надо использовать ключевое слово static. Вот пример:
classMyClass
{
//Статическая переменная
publicstaticintdata;
//Конструктор
public MyClass()
{
data++;
}
}
class Test
{
public static void Main()
{
MyClass a=new MyClass();
MyClass b=new MyClass();
System.Console.WriteLine(MyClass.data);
}
}
Указанный фрагмент выведет на экран, естественно, 2 (переменая data увеличится в каждом из двух конструкторов).
Основы c#. Урок 22. Статические методы класса
На предыдущем уроке мы рассмотрели статические переменные класса. При этом наша переменная data была объявлена как public. Это не слишком хорошо - переменные класса лучше прятать от посторонних глаз. Но, так как доступ к нашей переменной нам все-таки нужен, то мы добавим в наш класс функции для чтения и записи переменной data. Вот новый вариант нашего класса:
classMyClass
{
//Статическая переменная
static int data;
//Статический метод для чтения переменной
public static int GetData()
{
returndata;
}
//Статический метод для записи переменной
public static void SetData(int newData)
{
data=newData;
}
//Конструктор
public MyClass()
{
data++;
}
}
class Test
{
public static void Main()
{
MyClass a=new MyClass();
MyClass b=new MyClass();
//Вызов статического метода GetData
System.Console.WriteLine(MyClass.GetData());
//Вызов статического метода SetData
MyClass.SetData(5);
System.Console.WriteLine(MyClass.GetData());
}
}
Указанный фрагмент выведет, разумеется, 2 и 5.
Обратите внимание, что к статическим переменным и методам мы всегда получаем доступ через имя класса, а к нестатическим - через экземпляр класса. Но это не значит, что мы не имеем доступа к статическим переменным класса из нестатических методов класса - имеем, и даже у нас есть пример этому - конструктор нашего класса MyClass.