Учитывает ли атрибут CLSCompliant старые версии языков .NET?
-
12-09-2019 - |
Вопрос
Например, я читал, что Visual Basic .net раньше не имел перегрузок операторов, поэтому не сможет использовать перегруженные типы операторов, если они также не предоставляются как обычные методы (Add вместо оператора +).
Теперь, когда в VB есть эта функция, будет ли атрибут CLSCompliant учитывать, если у вас есть обычные статические методы, такие как Add, Subtract, а не только перегрузки операторов?
Я написал некоторые типы без вербальных статических методов, а только с перегрузками операторов, и компилятору C# это было безразлично.Если бы это была проблема, меня бы предупредили, верно?
Решение
Соблюдение CLS не связано с старшая что-либо - это просто базовый набор функций, которые вам разумно следует ожидать произвольный язык для обработки (при использовании вашего кода).Например, это не разумно предположить, что язык чувствителен к регистру, поэтому члены «Foo» и «foo», хотя и допустимы в C#, не совместимы с CLS.
Компилятор предупредит вас, если вы об этом попросите;добавлять [CLSCompliant(true)]
к типу/сборке/и т. д. и он проверит вашу претензию.
Если вы являетесь независимым поставщиком ПО, возможно, вам стоит подумать о соблюдении CLS.Если вы пишете код только для себя и команды, вам, вероятно, не нужны накладные расходы.