Основы VB.NET Урок 10. Статические методы и переменные класса
Статические методы уже встречались нам на прошлых уроках. На этом уроке мы с вами рассмотрим их (и, разумеется, статические переменные) более подробно.
Для начала рассмотрим статические переменные. Если кратко, то статческие переменные - это переменные самого класса. Обычные переменные относятся всегда к конкретному экземпляру класса, статические же - именно ко всему классу целиком. Т. е. все экземпляры класса будут разделять один экземпляр такой переменной. Это может пригодится, например, если нам надо иметь знать общее количество созданных экземпляров класса. Именно такой пример мы сейчас и напишем:
Imports System
Class SomeClass
Public Shared counter As Integer
Public Sub New()
'Увеличиваем счетчик на единицу
counter = counter + 1
End Sub
End Class
Class Test
Public Shared Sub Main()
Dim d1 As New SomeClass()
Dim d2 As New SomeClass()
Console.WriteLine(d1.counter)
End Sub
End Class
Как вы видите, переменная counter в классе SomeClass объявлена как статическая (это мы сделали с помощью ключевого слова Shared). В конструкторе класса мы увеличиваем эту переменную на единицу. Так как это статическая переменная, то при создании первого экземпляра класса она станет равной одному, при создании второго - двум и т. д. Наша программа выведет на экран, понятное дело, двойку.
В принципе вместо строки
...
Console.WriteLine(d1.counter)
...
можно было написать и так:
...
Console.WriteLine(SomeClass.counter)
...
В первом варианте мы используем конкретный экземпляр класса, во втором- сам класс. Результат в двух вариантах, естественно, будет одини тот же. Т. е. статические переменные вы можете использовать как для конкретного экземпляра класса, так и для всего класса целиком.
Теперь поговорим о статических методах. Аналогично статическим переменным, эти методы относятся к самому классу, а не к конкретному его экземпляру. Обычные методы мы всегда вызываем для конкретного экземпляра класса:
Dim z As New SomeClass
z.SomeMethod1()
Для статических же методов мы можем использовать не только конкретный экземпляр класса, но и сам класс:
SomeClass.SomeMethod2()
Пример использования статических методов у нас уже был чуть ли не в каждом уроке. Это класс Test с методом Main:
Class Test
Public Shared Sub Main()
...
End Sub
End Class
Как вы видите, медод Main объявляется с модификатором Shared, который как раз и определяет его статичность. После этого становится возможным вызов метода Main без создания экземпляра класса Test.
|