Система общих типов (CLS) в .NET

Система общих типов (Common Language Specification) — это часть Common Language Infrastructure (CLI), которая определяет минимальный набор языковых конструкций и правил, необходимых для обеспечения совместимости различных языков программирования в .NET.

CLS разработан для того, чтобы код, написанный на одном языке (например, C#), мог быть использован на другом (например, VB.NET или F#) без проблем с совместимостью.

Ключевые аспекты CLS

  1. Совместимость
    CLS обеспечивает возможность вызова кода, написанного на одном языке, из другого языка. Например, если у вас есть библиотека на C#, то другие языки, такие как VB.NET или F#, смогут ее использовать.
  2. Ограничения
    CLS накладывает определенные ограничения на код, чтобы он соответствовал спецификации. Например:
    • Имена не должны различаться только регистром (в C# MyMethod и mymethod — разные методы, а в VB.NET — нет).
    • Публичные члены не должны использовать не CLS-совместимые типы (например, unsigned int не CLS-совместим).
  3. CLS-совместимость
    Чтобы гарантировать, что ваш код соответствует CLS, в C# можно использовать атрибут [CLSCompliant(true)]

CLS vs CTS vs CLR

  • CLS (Common Language Specification) — набор правил для совместимости языков .NET.
  • CTS (Common Type System) — общая система типов, которая определяет, какие типы данных поддерживаются в .NET.
  • CLR (Common Language Runtime) — среда выполнения .NET, управляющая памятью, безопасностью и выполнением кода.