Как называются и зачем нужны такие штуки [field:]?

В языке C# штуки вида [field:] называются атрибутами (англ. attributes) и используются для добавления метаданных к типам, членам классов или сборкам.

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

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

Еще одним примером использования атрибутов является возможность указания определенных правил или ограничений для типов или членов класса. Например, атрибут [Obsolete] можно использовать для пометки устаревшего кода, чтобы предупредить разработчиков о том, что данный код не рекомендуется использовать.

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

Чтобы использовать атрибуты в C#, нужно указать их перед типом или членом класса, используя символ "@" перед именем атрибута. Например:

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)]
public class MyAttribute : Attribute
{
    // ...
}

[My]
public class MyClass
{
    // ...
}

В этом примере атрибут [My] применяется к классу MyClass, позволяя указать дополнительные метаданные или правила для этого класса.

Надеюсь, что данное объяснение помогло вам понять, что такое атрибуты в C# и зачем они нужны. Атрибуты являются мощным и полезным инструментом, позволяющим вам добавлять дополнительные метаданные к вашему коду и задавать дополнительные правила и ограничения для типов и членов классов.