Szukaj…


Składnia

  1. [zespół: zgodny z CLSC (prawda)]
  2. [CLSCompliant (true)]

Parametry

Konstruktor Parametr
CLSCompliantAttribute (Boolean) Inicjuje wystąpienie klasy CLSCompliantAttribute wartością logiczną wskazującą, czy wskazany element programu jest zgodny z CLS.

Uwagi

Specyfikacja wspólnego języka (CLS) to zbiór podstawowych zasad, które powinien potwierdzić każdy język ukierunkowany na CLI (język potwierdzający specyfikację infrastruktury wspólnej języka) w celu współpracy z innymi językami zgodnymi z CLS.

Lista języków CLI

Powinieneś oznaczyć swój zespół jako zgodny z CLSC w większości przypadków, gdy dystrybuujesz biblioteki. Ten atrybut gwarantuje, że Twój kod będzie użyteczny we wszystkich językach zgodnych z CLS. Oznacza to, że Twój kod może być używany przez dowolny język, który można skompilować i uruchomić w CLR ( Common Language Runtime )

Gdy twój zespół jest oznaczony CLSCompliantAttribute , kompilator sprawdzi, czy Twój kod narusza którąkolwiek z zasad CLS i zwróci ostrzeżenie, jeśli będzie to konieczne.

Modyfikator dostępu, do którego mają zastosowanie reguły CLS

using System;

[assembly:CLSCompliant(true)]
namespace CLSDoc
{
   
    public class Cat
    {
        internal UInt16 _age = 0;
        private UInt16 _daysTillVacination = 0;

        //Warning CS3003  Type of 'Cat.DaysTillVacination' is not CLS-compliant
        protected UInt16 DaysTillVacination
        {
            get { return _daysTillVacination; }
        }

        //Warning    CS3003    Type of 'Cat.Age' is not CLS-compliant
        public UInt16 Age
        { get { return _age; } }

        //valid behaviour by CLS-compliant rules
        public int IncreaseAge()
        {
            int increasedAge = (int)_age + 1;
           
            return increasedAge;
        }

    }
}

Zasady zgodności z CLS dotyczą tylko komponentów publicznych / chronionych.

Naruszenie reguły CLS: Niepodpisane typy / sbyte

using System;

[assembly:CLSCompliant(true)]
namespace CLSDoc
{
   
    public class Car
    {
        internal UInt16 _yearOfCreation = 0;

        //Warning CS3008  Identifier '_numberOfDoors' is not CLS-compliant 
        //Warning CS3003  Type of 'Car._numberOfDoors' is not CLS-compliant 
        public UInt32 _numberOfDoors = 0;

        //Warning    CS3003    Type of 'Car.YearOfCreation' is not CLS-compliant
        public UInt16 YearOfCreation
        {
            get { return _yearOfCreation; }
        }


        //Warning CS3002  Return type of 'Car.CalculateDistance()' is not CLS-compliant
        public UInt64 CalculateDistance()
        {
            return 0;
        }

        
        //Warning CS3002  Return type of 'Car.TestDummyUnsignedPointerMethod()' is not CLS-compliant 
        public UIntPtr TestDummyUnsignedPointerMethod()
        {
            int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
            UIntPtr ptr = (UIntPtr)arr[0];

            
            return ptr;
        }

        //Warning CS3003  Type of 'Car.age' is not CLS-compliant 
        public sbyte age = 120;


    }
}

Naruszenie reguły CLS: To samo nazewnictwo

using System;

[assembly:CLSCompliant(true)]
namespace CLSDoc
{
   
    public class Car
    {
        //Warning    CS3005    Identifier 'Car.CALCULATEAge()' differing only in case is not CLS-compliant
        public int CalculateAge()
        {
            return 0;
        }

        public int CALCULATEAge()
        {
            return 0;
        }

    }
}

W programie Visual Basic nie jest rozróżniana wielkość liter

Naruszenie reguły CLS: Identyfikator _

using System;

[assembly:CLSCompliant(true)]
namespace CLSDoc
{
   
    public class Car
    {
        //Warning CS3008  Identifier '_age' is not CLS-complian    
        public int _age = 0;    
    }

}

Nie można uruchomić zmiennej za pomocą _

Naruszenie reguły CLS: Dziedzicz z klasy innej niż CLSComplaint

using System;

[assembly:CLSCompliant(true)]
namespace CLSDoc
{

    [CLSCompliant(false)]
    public class Animal
    {
        public int age = 0;
    }
  
    //Warning    CS3009    'Dog': base type 'Animal' is not CLS-compliant
    public class Dog : Animal
    {
    }

}


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow