C# Language
CLSCompliantAttribute
수색…
통사론
- [어셈블리 : CLSCompliant (true)]
- [CLSCompliant (true)]
매개 변수
건설자 | 매개 변수 |
---|---|
CLSCompliantAttribute (부울) | 지정된 프로그램 요소가 CLS 규격인지 여부를 나타내는 부울 값을 사용하여 CLSCompliantAttribute 클래스의 인스턴스를 초기화합니다. |
비고
CLS (Common Language Specification)는 CLI를 대상으로하는 언어 (CLS (Common Language Infrastructure) 사양을 확인하는 언어)가 다른 CLS 호환 언어와 상호 운용되도록 확인해야하는 기본 규칙 세트입니다.
라이브러리를 배포 할 때 대부분의 경우 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