c static



статический класс

Автор Vladimir Pankratov задал вопрос в разделе Другие языки и технологии

Для чего нужны статические классы? (C#) и получил лучший ответ

Ответ от Николай Веселуха[гуру]
Ярким примером статического класса служит класс Console который имеет туеву хучу свойств и методов, которые можно использовать в консольных приложениях где угодно (глобализм) , не задумываясь, а как к этому получить доступ. Если бы класс Console не был статическим, то все конструкторы класса для его функционирования пришлось бы делать приватными. Так как создание экземпляра такого класса не предусмотрено.
Ключевое слово static разом решает все проблемы.. .И объект создать нельзя (нет конструкторов) и всё включено.
Изучите функциональность класса Console и вы поймёте, в каких случаях можно и нужно создавать такие классы.

Ответ от Голый Мужик[гуру]
это такой аналог модулей: набор методов, доступных для всей подсистемы. обычно это какие-то вспомогательные алгоритмы.
начиная с C# 3, в статических классах можно размещать методы расширения:
class Person {
    public string Name { get; set; }
}
static class PersonExtensions {
    public static GetName(this Person person) {
        return person.Name;
    }
}
class Program {
    public static void Main() {
        var person = new Person("John Smith");
        var name = person.GetName();
        Console.WriteLine(name);
    }
}
в таком виде реализованы, например, многие алгоритмы LINQ: Where(), Sort() и так далее.

Ответ от Михаил Васюков[новичек]
Класс можно объявлять как static. Статический класс обладает двумя основными свойствами. Во-первых, объекты статического класса создавать нельзя. И во-вторых, статический класс должен содержать только статические члены. Статический класс создается по приведенной ниже форме объявления класса, видоизмененной с помощью ключевого слова static.
static class имя класса { // ...
Вот пример:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
// В данном классе инкапсулируются статические методы
// выполняющие простейшие операции
static class MyMath
{
// Целая часть числа
static public int round(double d)
{
return (int)d;
}
// Дробная часть числа
static public double doub(double d)
{
return d - (int)d;
}
// Квадрат числа
static public double sqr(double d)
{
return d * d;
}
// Квадратный корень числа
static public double sqrt(double d)
{
return Math.Sqrt(d);
}
}
class Program
{
static void Main(string[] args)
{
Console.Write ("Введите число: ");
double num = Convert.ToDouble (Console.ReadLine ());
Console.WriteLine("
Исходное число: " + num + "
--------------------------
");
Console.WriteLine("Целая часть: {0}",MyMath.round(d: num));
Console.WriteLine("Дробная часть числа: {0}",MyMath.doub(d: num));
Console.WriteLine("Квадрат числа: {0:#.##}",MyMath.sqr(d: num));
Console.WriteLine("Квадратный корень числа: {0:#.###}",MyMath.sqrt(d: num));
Console.WriteLine ("
--------------------------
Программа завершила свою работу");
Console.ReadLine();
}
}
}

Ответ от Ёергей -[гуру]
В С# статический класс играет роль пространства имен для глобальных переменных.
Глобальных переменный в принципе в C# нет, но можно объявлять переменные как поля в статическом классе. Обращение к этим переменных конечно будет использовать имя класса, зато все "плюшки" глобальных переменных останутся (и недостатки, кстати, тоже)

Ответ от FoxKiller FoxKiller[гуру]
Что такое статический класс? Просто класс, у которого все методы и поля статические, даже объявленные не явно.
Я не знаю, можно ли именно в C# создать объект статического класса, но подразумеваю, что нельзя.
Или вопрос был всё таки - а нах@я?

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Для чего нужны статические классы? (C#)
Внутренний класс на Википедии
Посмотрите статью на википедии про Внутренний класс
Класс памяти на Википедии
Посмотрите статью на википедии про Класс памяти
Метод программирование на Википедии
Посмотрите статью на википедии про Метод программирование
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*