Учитывает ли атрибут CLSCompliant старые версии языков .NET?

StackOverflow https://stackoverflow.com/questions/960622

  •  12-09-2019
  •  | 
  •  

Вопрос

Например, я читал, что Visual Basic .net раньше не имел перегрузок операторов, поэтому не сможет использовать перегруженные типы операторов, если они также не предоставляются как обычные методы (Add вместо оператора +).

Теперь, когда в VB есть эта функция, будет ли атрибут CLSCompliant учитывать, если у вас есть обычные статические методы, такие как Add, Subtract, а не только перегрузки операторов?

Я написал некоторые типы без вербальных статических методов, а только с перегрузками операторов, и компилятору C# это было безразлично.Если бы это была проблема, меня бы предупредили, верно?

Это было полезно?

Решение

Соблюдение CLS не связано с старшая что-либо - это просто базовый набор функций, которые вам разумно следует ожидать произвольный язык для обработки (при использовании вашего кода).Например, это не разумно предположить, что язык чувствителен к регистру, поэтому члены «Foo» и «foo», хотя и допустимы в C#, не совместимы с CLS.

Компилятор предупредит вас, если вы об этом попросите;добавлять [CLSCompliant(true)] к типу/сборке/и т. д. и он проверит вашу претензию.

Если вы являетесь независимым поставщиком ПО, возможно, вам стоит подумать о соблюдении CLS.Если вы пишете код только для себя и команды, вам, вероятно, не нужны накладные расходы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top