Статические конструкторы

У статических конструкторов отсутствуют модификаторы доступа — они пользуются доступом по умолчанию, а следовательно, их нельзя вызывать из программы.

using System;

class Cons

{

public static int alpha;

public int beta;

// Статический конструктор.

static Cons()

{

alpha = 99;

Console.WriteLine("В статическом конструкторе.");

}

// Конструктор экземпляра.

public Cons()

{

beta = 100;

Console.WriteLine("В конструкторе экземпляра.");

}

}

class ConsDemo

{

static void Main()

{

Cons ob = new Cons();

Console.WriteLine("Cons.alpha: " + Cons.alpha);

Console.WriteLine("ob.beta: " + ob.beta);

}

}

Статические классы

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

static class имя_класса{ //...

Статические классы применяются главным образом в двух случаях. Во-первых, статический класс требуется при создании метода расширения. Методы расширения связаны в основном с языком LINQ и поэтому подробнее рассматриваются в главе 19. И во-вторых, статический класс служит для хранения совокупности связанных друг с другом статических методов.

//продемонстрировать применение статического класса.

using System;

static class NumericFn

{

//возвратить обратное числовое значение

static public double Reciprocal(double num)

{

return 1 / num;

}

//возвратить дробную чась числового выражения

static public double FracPart(double num)

{

return num - (int)num;

}

//возвратить логическое значение true, если числовое значение переменной num о четное

static public bool IsEven(double num)

{

return (num % 2) == 0? true: false;

}

//возвратить логическое значение true, если числовое значение переменной num четное

static public bool IsOdd(double num){

return!IsEven(num);

}

}

class StaticClassDemo

{

static void Main()

{

Console.WriteLine("Обратная величина числа 5 равна "

+ NumericFn.Reciprocal(5.0));

Console.WriteLine("Дробная часть числа 4.234 равна "

+ NumericFn.FracPart(4.234));

if (NumericFn.IsEven(10))

Console.WriteLine("10 - четное число.");

if (NumericFn.IsOdd(5))

Console.WriteLine("5 - нечетное число.");

//далее следует попытка создать экземпляр обьекта класса NumericFn,

//что может стать причиной появленм ошибки.

//NumericFn ob=new NumericFn(); // Ошибка!

}

}

И последнее замечание: несмотря на то, что для статического класса не допускается наличие конструктора экземпляра, у него может быть статический конструктор.

ГЛАВА

Перегрузка операторов


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: