Статические классы в C#
В C# разрешено создавать статический класс с помощью ключевого слова static . Статический класс может содержать только статические поля, статические методы и статический конструктор. Не допускается создание объектов статического класса. Статические классы являются изолированными, что означает, что вы не можете наследовать статический класс от другого класса.
Синтаксис:
static class Class_Name
{
// static data members
// static method
}
В C # статический класс содержит два типа статических членов, а именно:
- Статические поля: поскольку статический класс всегда содержит статические поля, поэтому статические поля объявляются с использованием ключевого слова static, и к ним осуществляется прямой доступ с использованием имени класса. Память статических полей распределяется индивидуально без какой-либо связи с объектом.
Синтаксис:
- Статические методы: поскольку статический класс всегда содержит статические методы, статические методы объявляются с использованием ключевого слова static. Эти методы имеют доступ только к статическим элементам данных, они не могут получить доступ к нестатическим элементам данных.
Синтаксис:
Пример 1:
Вывод:
Подробная информация об авторе:
Имя автора: Анкита
Язык: CSharp
Всего статей: 84
Пример 2:
// C# программа для демонстрации
// принципа работы статического класса
using System;
// объявление статического класса
public static class GFG {
// объявление статического метода
static void display()
{
Console.WriteLine("Static Method of class GFG");
}
}
// пытаемся унаследовать класс GFG
// выдаст ошибку, так как статический
// класс не может быть унаследован
class GFG2 : GFG {
public static void Main(String[] args) {
}
}
Ошибка времени компиляции:
prog.cs (20,7): ошибка CS0709: `GFG2 ': невозможно унаследовать от статического класса` GFG'
Объяснение: В приведенном выше примере у нас есть статический класс с именем Author с использованием ключевого слова static. Класс Author содержит статические поля с именами A_name , L_name и T_no , а также статический метод с именем details () . Метод статического класса просто вызывается с использованием имени его класса, например Author.details (); . Как мы знаем, статический класс не состоит из объекта, поэтому доступ к члену данных класса Author осуществляется по имени его класса, например Author.A_name , Author.L_name и Author.T_no .
Разница между статическим и нестатическим классом
Статический класс | Нестатический класс |
---|---|
Статический класс определяется с помощью ключевого слова static. | Нестатический класс не определяется с помощью ключевого слова static. |
В статическом классе вам не разрешено создавать объекты. | В нестатическом классе вам разрешено создавать объекты, используя ключевое слово new . |
К членам данных статического класса можно получить прямой доступ по имени его класса. | Члены данных нестатического класса не получают прямого доступа по имени его класса. |
Статический класс всегда содержит статические члены. | Нестатический класс может содержать как статические, так и нестатические методы. |
Статический класс не содержит конструктора экземпляра. | Нестатический класс содержит конструктор экземпляра. |
Статический класс не может наследовать от другого класса. | Нестатический класс может быть унаследован от другого класса. |
// C# program to illustrate the
// concept of static class
using System;
namespace ExampleOfStaticClass {
// Creating static class
// Using static keyword
static class Author {
// Static data members of Author
public static string A_name = "Ankita";
public static string L_name = "CSharp";
public static int T_no = 84;
// Static method of Author
public static void details()
{
Console.WriteLine("The details of Author is:");
}
}
// Driver Class
public class GFG {
// Main Method
static public void Main()
{
// Calling static method of Author
Author.details();
// Accessing the static data members of Author
Console.WriteLine("Author name : {0} ", Author.A_name);
Console.WriteLine("Language : {0} ", Author.L_name);
Console.WriteLine("Total number of articles : {0} ",
Author.T_no);
}
}
}
static class Class_name {
public static nameofmethod()
{
// code
}
}
static class Class_name
{
public static nameofdatamember;
}
Только полноправные пользователи могут оставлять комментарии. Аутентифицируйтесь пожалуйста, используя сервисы.