수색…


통사론

  1. [어셈블리 : CLSCompliant (true)]
  2. [CLSCompliant (true)]

매개 변수

건설자 매개 변수
CLSCompliantAttribute (부울) 지정된 프로그램 요소가 CLS 규격인지 여부를 나타내는 부울 값을 사용하여 CLSCompliantAttribute 클래스의 인스턴스를 초기화합니다.

비고

CLS (Common Language Specification)는 CLI를 대상으로하는 언어 (CLS (Common Language Infrastructure) 사양을 확인하는 언어)가 다른 CLS 호환 언어와 상호 운용되도록 확인해야하는 기본 규칙 세트입니다.

CLI 언어 목록

라이브러리를 배포 할 때 대부분의 경우 CLSCompliant로 어셈블리를 표시해야합니다. 이 속성은 모든 CLS 호환 언어에서 코드를 사용할 수 있음을 보장합니다. 즉, CLR ( 공용 언어 런타임 )에서 컴파일 및 실행할 수있는 모든 언어로 코드를 사용할 수 있습니다.

어셈블리에 CLSCompliantAttribute 가 표시되면 컴파일러에서 코드가 CLS 규칙을 위반하는지 확인하고 필요한 경우 경고를 반환합니다.

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;
        }

    }
}

CLS 준수 규칙은 공용 / 보호 된 구성 요소에만 적용됩니다.

CLS 규칙 위반 : 부호없는 유형 / 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;


    }
}

CLS 규칙 위반 : 동일한 이름 지정

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;
        }

    }
}

Visual Basic 대 / 소문자를 구분하지 않습니다.

CLS 규칙 위반 : 식별자 _

using System;

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

}

_로 변수를 시작할 수 없습니다.

CLS 규칙 위반 : 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
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow