Что такое “статический” класс?

Если вы перебираете String, то каждый элемент представляет собой один символ строки.


Вы можете перебирать массив categories

for category in responseJSON.categories {
    print(category.categoryName ?? "No name")
}

Чтобы получить все имена, вы можете использовать compactMap, который удаляет nil значения из массива

[ 111]

Далее:

  • Если каждая категория имеет свое имя, сделайте тип этого свойства необязательным String (тогда вы можете использовать map вместо compactMap)

  • Я бы улучшил ваше наименование. Переименуйте categoryName ключ json в name, используя CodingKeys enum. Тогда вы можете сделать

    category.name
    
40
задан svick 13 June 2012 в 10:21
поделиться

9 ответов

Статический класс нельзя инстанцировать и может содержать только статических участников. Следовательно, призывы к статическому классу как: MyStaticClass.MyMethod(...) или MyStaticClass.MyConstant.

Не статический класс можно инстанцировать и может содержать нестатических участников (конструкторы экземпляра, деструктор, индексаторы). Нестатический член нестатического класса является вызываемым только через объект:

MyNonStaticClass x = new MyNonStaticClass(...);
x.MyNonStaticMethod(...);
40
ответ дан CodesInChaos 27 November 2019 в 01:05
поделиться

Во-первых, комментарий к ответу, который спрашивают о том, что "статичный" означает. В терминах C#, "статичных", означает "касающийся самого типа, а не экземпляра типа". Вы получаете доступ к статическому участнику (от другого типа) использование имени типа вместо ссылки или значения. Например:

// Static method, so called using type name
Guid someGuid = Guid.NewGuid();
// Instance method, called on a value
string asString = someGuid.ToString();

Теперь, статические классы...

Статические классы обычно используются в качестве "служебных" классов. Канонический пример, вероятно, System.Math. Не имеет смысла создавать экземпляр математики - это просто. Несколько правил (и "может" и, "не могут"):

  • Статические классы всегда происходят из object. Вы не можете указать другой базовый тип или заставить статический класс реализовать интерфейс.
  • Статические классы не могут иметь никаких членов экземпляра - все переменные, методы и т.д. должны быть статическими.
  • Статические классы не могут объявить конструкторы экземпляра, и компилятор не создает конструктора без параметров по умолчанию. (Прежде чем статические классы прибыли в C# 2.0, люди будут часто создавать абстрактный класс с частным конструктором, который предотвратил инстанцирование. Никакая потребность здесь.)
  • Статические классы неявно абстрактны (т.е. они компилируются в IL, который описывает абстрактный класс), но Вы не можете добавить abstract модификатор самостоятельно.
  • Статические классы неявно изолируются (т.е. они компилируются в IL, который описывает запечатанный класс), но Вы не можете добавить sealed модификатор самостоятельно.
  • Статические классы могут быть универсальными.
  • Статические классы могут быть вложены, или в нестатических или в статических классах.
  • Статические классы могут иметь вложенные типы, или нестатичные или статичные.
  • Только статические, неуниверсальные классы верхнего уровня могут содержать дополнительные методы (C# 3.0).
67
ответ дан Jon Skeet 27 November 2019 в 01:05
поделиться

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

6
ответ дан Dan Herbert 27 November 2019 в 01:05
поделиться

Все методы/свойства в статическом классе должны быть статичными, тогда как 'нормальный' класс может содержать соединение методов экземпляра и статических методов.

5
ответ дан Mark Simpson 27 November 2019 в 01:05
поделиться
public static class ClassName {}

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

 public class ClassName {}

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

 ClassName classNameObject = new ClassName(); 
6
ответ дан rghome 27 November 2019 в 01:05
поделиться

Вы не можете инстанцировать (создайте объекты), статический класс. И это может только содержать статических участников.

Пример: система. Математика

3
ответ дан Henk Holterman 27 November 2019 в 01:05
поделиться

Статический класс может содержать статических участников только.

Статический участник может использоваться, не инстанцируя класса сначала.

3
ответ дан Konstantin Tarkus 27 November 2019 в 01:05
поделиться

Статические классы и участники используются для создания данных и методов, к которым можно получить доступ, не создавая экземпляр (использующий new ключевое слово, у них не может быть конструктора) класса.

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

Это классы загружаются CLR, когда программа или пространство имен, содержащее класс, загружаются.

Они также изолируются, не может быть наследован от.

2
ответ дан CMS 27 November 2019 в 01:05
поделиться

http://www.javaworld.com/javaworld/javaqa/1999-08/01-qa-static2.html - очень хорошая статья об этом. Это для Java. Но я думаю, что концепция должна быть такой же и в C#.

2
ответ дан 27 November 2019 в 01:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: