2009-06-06 8 views
1

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

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

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

ответ

6

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

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

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

+0

Спасибо Marc, имеет смысл. –

+0

Я рекомендую CLSCompliant при записи на нескольких языках, даже в пределах одной команды (например, ранее сегодня я предложил использовать некоторые из них для работы с JSCript.NET, и этот код нужно будет вызывать из проверки C# или VB.NET - CLSCompliant, Я думаю, поможет в этом случае, когда-либо это был только один программист, кодирующий целое). –

+0

Действительно - я думал о команде на одном языке. –