logo search
CSharp_Prog_Guide

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

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

Статические методы могу быть перегружены, но не переопределены.

Для объявления статических методов используется ключевое слово static перед возвращаемым типом члена. Пример:

---

Статические члены инициализируются перед первым доступом к статическому члену и перед статическим конструктором, если происходит вызов конструктора. Для доступа к члену статического класса следует использовать имя класса, а не имя переменной, указывая расположение члена. Пример.

Automobile.Drive();

int i = Automobile.NumberOfWheels;

Example

Here is an example of a static class that contains two methods that convert temperature from Celsius to Fahrenheit and from Fahrenheit to Celsius:

public static class TemperatureConverter

{

public static double CelsiusToFahrenheit(string temperatureCelsius)

{

// Convert argument to double for calculations.

double celsius = System.Double.Parse(temperatureCelsius);

// Convert Celsius to Fahrenheit.

double fahrenheit = (celsius * 9 / 5) + 32;

return fahrenheit;

}

public static double FahrenheitToCelsius(string temperatureFahrenheit)

{

// Convert argument to double for calculations.

double fahrenheit = System.Double.Parse(temperatureFahrenheit);

// Convert Fahrenheit to Celsius.

double celsius = (fahrenheit - 32) * 5 / 9;

return celsius;

}

}

Пример

Ниже приведен пример статического класса, содержащего два метода, преобразующих температуру по Цельсию в температуру по Фаренгейту и наоборот.

-----

class TestTemperatureConverter

{

static void Main()

{

System.Console.WriteLine(

"Please select the convertor direction");

System.Console.WriteLine("1. From Celsius to Fahrenheit.");

System.Console.WriteLine("2. From Fahrenheit to Celsius.");

System.Console.Write(":");

string selection = System.Console.ReadLine();

double F, C = 0;

switch (selection)

{

case "1":

System.Console.Write(

"Please enter the Celsius temperature: ");

F =

TemperatureConverter.CelsiusToFahrenheit(System.Console.ReadLine());

System.Console.WriteLine(

"Temperature in Fahrenheit: {0:F2}", F);

break;

case "2":

System.Console.Write(

"Please enter the Fahrenheit temperature: ");

C = TemperatureConverter.FahrenheitToCelsius(System.Console.ReadLine());

System.Console.WriteLine(

"Temperature in Celsius: {0:F2}", C);

break;

default:

System.Console.WriteLine(

"Please select a convertor.");

break;

}

}

}

-----

Input

2

98.6

Sample Output:

Please select the convertor

1. From Celsius to Fahrenheit.

2. From Fahrenheit to Celsius.

:2

Please enter the Fahrenheit temperature: 98.6

Temperature in Celsius: 37.00

Additional sample output might look as follows:

Please select the convertor

1. From Celsius to Fahrenheit.

2. From Fahrenheit to Celsius.

:1

Please enter the Celsius temperature: 37.00

Temperature in Fahrenheit: 98.60