CLSCompliantAttribute Class
Indicates whether a program element is compliant with the Common Language Specification (CLS). This class cannot be inherited.
Namespace: System
Assembly: mscorlib (in mscorlib.dll)
The CLSCompliantAttribute type exposes the following members.
| Name | Description | |
|---|---|---|
![]() ![]() ![]() | CLSCompliantAttribute | Initializes an instance of the CLSCompliantAttribute class with a Boolean value indicating whether the indicated program element is CLS-compliant. |
| Name | Description | |
|---|---|---|
![]() ![]() ![]() | IsCompliant | Gets the Boolean value indicating whether the indicated program element is CLS-compliant. |
| Name | Description | |
|---|---|---|
![]() ![]() ![]() | Equals | Infrastructure. Returns a value that indicates whether this instance is equal to a specified object. (Inherited from Attribute.) |
![]() ![]() ![]() | Finalize | Allows an object to try to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection. (Inherited from Object.) |
![]() ![]() ![]() | GetHashCode | Returns the hash code for this instance. (Inherited from Attribute.) |
![]() ![]() ![]() | GetType | Gets the Type of the current instance. (Inherited from Object.) |
![]() ![]() ![]() | Match | When overridden in a derived class, returns a value that indicates whether this instance equals a specified object. (Inherited from Attribute.) |
![]() ![]() ![]() | MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) |
![]() ![]() ![]() | ToString | Returns a string that represents the current object. (Inherited from Object.) |
You can apply the CLSCompliantAttribute attribute to the following program elements: assembly, module, class, struct, enum, constructor, method, property, field, event, interface, delegate, parameter, and return value. However, the notion of CLS compliance is only meaningful for assemblies, modules, types, and members of types, not parts of a member signature. Consequently, CLSCompliantAttribute is ignored when applied to parameter or return value program elements.
If no CLSCompliantAttribute is applied to a program element, then by default:
The assembly is not CLS-compliant.
The type is CLS-compliant only if its enclosing type or assembly is CLS-compliant.
The member of a type is CLS-compliant only if the type is CLS-compliant.
If an assembly is marked as CLS-compliant, any publicly exposed type in the assembly that is not CLS-compliant must be marked with CLSCompliantAttribute using a false argument. Similarly, if a class is marked as CLS-compliant, you must individually mark all members that are not CLS-compliant. All non-compliant members must provide corresponding CLS-compliant alternatives.
Attributes that are applied to assemblies or modules must occur after the C# using (Imports in Visual Basic) clauses and before the code.
Note: |
|---|
The current Microsoft Visual Basic compiler intentionally does not generate a CLS-compliance warning, however, a future release of the compiler will issue that warning. |
The following example applies a CLSCompliantAttribute to the entire assembly.
using System;
[assembly:CLSCompliant(true)]
The following declaration generates a CLS-compliance warning because the type UInt32 is not specified in the CLS.
public int SetValue(UInt32 value);
If the declaration is marked with a CLSCompliantAttribute, no compiler warning or error is generated.
[CLSCompliant(false)] public int SetValue(UInt32 value);
For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.

