SlideShare a Scribd company logo
1 of 12
C# 4.0 Статические классы и статические члены класса
Понятие ключевого слова static Класс С# может определять любое количество статических членов с  использованием ключевого слова static. При этом соответствующий член должен вызываться непосредственно на уровне класса, а не на объектной ссылке.
Пример // Ошибка! WriteLine() не является методом уровня объекта1  Console с = new Console ();  с.WriteLine("...");  // Правильно! WriteLine() - статический метод.  Console.WriteLine("Thanks...");
Определение статических методов  class Teenager  {  public static Random r = new Random();  public static intGetRandomNumber(short upperLimit)  {  return r.Next(upperLimit);  }  public static string Complain ()  {  stnng[] messages = {"1", «2","3", "4'", "5"};  return messages[GetRandomNumberE)];  }  }
Статические члены могут оперировать только статическими данными и вызывать статические методы определяющего их класса. Попытка использования нестатических данных класса или вызова нестатического метода класса внутри реализации статического члена приводит к ошибке времени компиляции.
Определение статических полей данных  class SavingsAccount {     public static double currlnterestRate = 0.04;  }
Определение статических полей данных
Определение статических конструкторов  //неверно, значение сбрасывется public SavingsAccount(double balance)  {  currlnterestRate= 0.04;  currBalance= balance;  }
Определение статических конструкторов  //Нет возможности поменять статические данные class SavingsAccount {  public double currBalance;  // Статические данные.  public static double currlnterestRate = 0.04;  }
Определение статических конструкторов  static SavingsAccount ()  {  currlnterestRate= 0.04;  }
Определение статических конструкторов  • В отдельном классе может быть определен только один статический конструктор. Другими словами, статический конструктор нельзя перегружать.  • Статический конструктор не имеет модификатора доступа и не может принимать параметров.  • Статический конструктор выполняется только один раз, независимо от того, сколько объектов отдельного класса создается.  • Исполняющая система вызывает статический конструктор, когда создает  экземпляр класса или перед первым обращением к статическому члену этого класса.  • Статический конструктор выполняется перед любым конструктором уровня экземпляра.
Определение статических классов Основные характеристики статического класса: • Содержит только статические члены. • Создавать его экземпляры нельзя. • Он закрыт. • Не может содержать нестатических конструкторов

More Related Content

Similar to Cтатические классы и статические члены класса

Статический анализ кода в DDD
Статический анализ кода в DDDСтатический анализ кода в DDD
Статический анализ кода в DDDAleksei Alekseev
 
Основы ооп на языке C#. Часть 2. базовый синтаксис.
Основы ооп на языке C#. Часть 2. базовый синтаксис.Основы ооп на языке C#. Часть 2. базовый синтаксис.
Основы ооп на языке C#. Часть 2. базовый синтаксис.YakubovichDA
 
Методики «Inversion of Control» и «Dependency Injection». Применение в Spring.
Методики «Inversion of Control» и «Dependency Injection». Применение в Spring.Методики «Inversion of Control» и «Dependency Injection». Применение в Spring.
Методики «Inversion of Control» и «Dependency Injection». Применение в Spring.Fedor Malyshkin
 
Cтатический анализ кода (на примере DDD-фреймворка)
Cтатический анализ кода (на примере DDD-фреймворка)Cтатический анализ кода (на примере DDD-фреймворка)
Cтатический анализ кода (на примере DDD-фреймворка)ngrebnev
 
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Yandex
 
паттерны программирования
паттерны программированияпаттерны программирования
паттерны программированияguestfc8ae0
 
Статический анализ и написание качественного кода на C/C++ для встраиваемых с...
Статический анализ и написание качественного кода на C/C++ для встраиваемых с...Статический анализ и написание качественного кода на C/C++ для встраиваемых с...
Статический анализ и написание качественного кода на C/C++ для встраиваемых с...Andrey Karpov
 
Работа с БД в Java
Работа с БД в JavaРабота с БД в Java
Работа с БД в Javametaform
 
Всё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программистаВсё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программистаAndrey Karpov
 
Уменьшение влияния человеческого фактора при разработке бизнес приложений
Уменьшение влияния человеческого фактора при разработке бизнес приложенийУменьшение влияния человеческого фактора при разработке бизнес приложений
Уменьшение влияния человеческого фактора при разработке бизнес приложенийngrebnev
 
C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.Igor Shkulipa
 
Что могут статические анализаторы, чего не могут программисты и тестировщики
Что могут статические анализаторы, чего не могут программисты и тестировщикиЧто могут статические анализаторы, чего не могут программисты и тестировщики
Что могут статические анализаторы, чего не могут программисты и тестировщикиAndrey Karpov
 
основы Java переменные, циклы
основы Java   переменные, циклыосновы Java   переменные, циклы
основы Java переменные, циклыSergey Nemchinsky
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Javametaform
 
AlgoCollections (RUS)
AlgoCollections (RUS)AlgoCollections (RUS)
AlgoCollections (RUS)Anton Bukov
 
Основы и применение статического анализа кода при разработке лекция 1
Основы и применение статического анализа кода при разработке лекция 1Основы и применение статического анализа кода при разработке лекция 1
Основы и применение статического анализа кода при разработке лекция 1m2rus
 
презентация кметодическим указаниям к лаб. работам
презентация кметодическим указаниям к лаб. работампрезентация кметодическим указаниям к лаб. работам
презентация кметодическим указаниям к лаб. работамstudent_kai
 
Опыт разработки статического анализатора кода
Опыт разработки статического анализатора кодаОпыт разработки статического анализатора кода
Опыт разработки статического анализатора кодаAndrey Karpov
 
C++ осень 2013 лекция 3
C++ осень 2013 лекция 3C++ осень 2013 лекция 3
C++ осень 2013 лекция 3Technopark
 

Similar to Cтатические классы и статические члены класса (20)

WTF Code @ jug.lv
WTF Code @ jug.lvWTF Code @ jug.lv
WTF Code @ jug.lv
 
Статический анализ кода в DDD
Статический анализ кода в DDDСтатический анализ кода в DDD
Статический анализ кода в DDD
 
Основы ооп на языке C#. Часть 2. базовый синтаксис.
Основы ооп на языке C#. Часть 2. базовый синтаксис.Основы ооп на языке C#. Часть 2. базовый синтаксис.
Основы ооп на языке C#. Часть 2. базовый синтаксис.
 
Методики «Inversion of Control» и «Dependency Injection». Применение в Spring.
Методики «Inversion of Control» и «Dependency Injection». Применение в Spring.Методики «Inversion of Control» и «Dependency Injection». Применение в Spring.
Методики «Inversion of Control» и «Dependency Injection». Применение в Spring.
 
Cтатический анализ кода (на примере DDD-фреймворка)
Cтатический анализ кода (на примере DDD-фреймворка)Cтатический анализ кода (на примере DDD-фреймворка)
Cтатический анализ кода (на примере DDD-фреймворка)
 
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
 
паттерны программирования
паттерны программированияпаттерны программирования
паттерны программирования
 
Статический анализ и написание качественного кода на C/C++ для встраиваемых с...
Статический анализ и написание качественного кода на C/C++ для встраиваемых с...Статический анализ и написание качественного кода на C/C++ для встраиваемых с...
Статический анализ и написание качественного кода на C/C++ для встраиваемых с...
 
Работа с БД в Java
Работа с БД в JavaРабота с БД в Java
Работа с БД в Java
 
Всё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программистаВсё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программиста
 
Уменьшение влияния человеческого фактора при разработке бизнес приложений
Уменьшение влияния человеческого фактора при разработке бизнес приложенийУменьшение влияния человеческого фактора при разработке бизнес приложений
Уменьшение влияния человеческого фактора при разработке бизнес приложений
 
C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.
 
Что могут статические анализаторы, чего не могут программисты и тестировщики
Что могут статические анализаторы, чего не могут программисты и тестировщикиЧто могут статические анализаторы, чего не могут программисты и тестировщики
Что могут статические анализаторы, чего не могут программисты и тестировщики
 
основы Java переменные, циклы
основы Java   переменные, циклыосновы Java   переменные, циклы
основы Java переменные, циклы
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Java
 
AlgoCollections (RUS)
AlgoCollections (RUS)AlgoCollections (RUS)
AlgoCollections (RUS)
 
Основы и применение статического анализа кода при разработке лекция 1
Основы и применение статического анализа кода при разработке лекция 1Основы и применение статического анализа кода при разработке лекция 1
Основы и применение статического анализа кода при разработке лекция 1
 
презентация кметодическим указаниям к лаб. работам
презентация кметодическим указаниям к лаб. работампрезентация кметодическим указаниям к лаб. работам
презентация кметодическим указаниям к лаб. работам
 
Опыт разработки статического анализатора кода
Опыт разработки статического анализатора кодаОпыт разработки статического анализатора кода
Опыт разработки статического анализатора кода
 
C++ осень 2013 лекция 3
C++ осень 2013 лекция 3C++ осень 2013 лекция 3
C++ осень 2013 лекция 3
 

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

  • 1. C# 4.0 Статические классы и статические члены класса
  • 2. Понятие ключевого слова static Класс С# может определять любое количество статических членов с использованием ключевого слова static. При этом соответствующий член должен вызываться непосредственно на уровне класса, а не на объектной ссылке.
  • 3. Пример // Ошибка! WriteLine() не является методом уровня объекта1 Console с = new Console (); с.WriteLine("..."); // Правильно! WriteLine() - статический метод. Console.WriteLine("Thanks...");
  • 4. Определение статических методов class Teenager { public static Random r = new Random(); public static intGetRandomNumber(short upperLimit) { return r.Next(upperLimit); } public static string Complain () { stnng[] messages = {"1", «2","3", "4'", "5"}; return messages[GetRandomNumberE)]; } }
  • 5. Статические члены могут оперировать только статическими данными и вызывать статические методы определяющего их класса. Попытка использования нестатических данных класса или вызова нестатического метода класса внутри реализации статического члена приводит к ошибке времени компиляции.
  • 6. Определение статических полей данных class SavingsAccount { public static double currlnterestRate = 0.04; }
  • 8. Определение статических конструкторов //неверно, значение сбрасывется public SavingsAccount(double balance) { currlnterestRate= 0.04; currBalance= balance; }
  • 9. Определение статических конструкторов //Нет возможности поменять статические данные class SavingsAccount { public double currBalance; // Статические данные. public static double currlnterestRate = 0.04; }
  • 10. Определение статических конструкторов static SavingsAccount () { currlnterestRate= 0.04; }
  • 11. Определение статических конструкторов • В отдельном классе может быть определен только один статический конструктор. Другими словами, статический конструктор нельзя перегружать. • Статический конструктор не имеет модификатора доступа и не может принимать параметров. • Статический конструктор выполняется только один раз, независимо от того, сколько объектов отдельного класса создается. • Исполняющая система вызывает статический конструктор, когда создает экземпляр класса или перед первым обращением к статическому члену этого класса. • Статический конструктор выполняется перед любым конструктором уровня экземпляра.
  • 12. Определение статических классов Основные характеристики статического класса: • Содержит только статические члены. • Создавать его экземпляры нельзя. • Он закрыт. • Не может содержать нестатических конструкторов