CLS 준수에 대한 많은 페이지를 발견했습니다.CLS 호환 코드를 작성해야하는 이유는 무엇입니까?
내가 이해 한 CLS 준수한다 :
많은 peolple "는 코드를 작성하는 경우, 당신이 그것을 준수 CLS 작성해야한다."고 쓰기 그러나 읽을 수있는 한, 일반 소프트웨어에서 CLS 규격을 사용할 이유가 없습니다.
맞나요? 아니면 뭔가 놓쳤습니까?
는CLS 준수에 대한 많은 페이지를 발견했습니다.CLS 호환 코드를 작성해야하는 이유는 무엇입니까?
내가 이해 한 CLS 준수한다 :
많은 peolple "는 코드를 작성하는 경우, 당신이 그것을 준수 CLS 작성해야한다."고 쓰기 그러나 읽을 수있는 한, 일반 소프트웨어에서 CLS 규격을 사용할 이유가 없습니다.
맞나요? 아니면 뭔가 놓쳤습니까?
는라이브러리 또는 프레임 워크를 작성하는 경우 모든 CLR 언어에서 라이브러리를 사용할 수 있는지 확인하는 것이 좋습니다.
는 코드가 CLS를 준수해야하는 특정 이유가되지 않을 수도 있습니다,하지만 사람들은 "모범 사례"를되고 그것을 언급하는 - 오히려 잴 것보다, 좋은 습관 때문에 당신이해야 할 일을 특정 시나리오에 더 좋습니다. 즉
, 당신이 이유 하지에 있으면 않는 코드의 CLS를 준수하도록하는 것이 좋습니다입니다.
대답은 .NET 언어 간의 호환성을 극대화하는 것입니다. CLS는 F #, Iron Python, C++/CLI, VB.NET, Boo 및 기타 모든 .NET 언어와 함께 작동하도록 C# 어셈블리를 허용하는 링글 프랑크입니다. 경계 밖으로 벗어나서 조립품이 올바르게 작동 할 수는 있지만 반드시 그런 것은 아닙니다.
CLS 준수는 특히 라이브러리를 배포 할 때 특히 중요합니다. 특히 CLS 규격을 준수하면 모든 CLS 호환 언어에서 라이브러리를 사용할 수 있습니다.
예를 들어 Visual Basic은 대소 문자를 구분하지 않지만 C#은 대소 문자를 구분하지 않습니다. CLS 준수의 요구 사항 중 하나는 공용 (및 보호 된) 멤버 이름이 대/소문자 만 다른 경우가 아니므로 Visual Basic 코드 또는 .NET 기반 언어를 기반으로 차별화되지 않는 다른 .NET 언어로 라이브러리를 안전하게 사용할 수 있는지 확인해야합니다. 케이스.
또한 밑줄이있는 멤버를 시작할 수 없다는 규칙이 있습니다. 어느 날 공공 재산에 의해 포장되는 보호 변수의 이름을 궁금해하게 ... 소문자 버전을 사용할 수 없으며 밑줄을 사용할 수 없습니다 ... 다음 추악한 대안은 무엇입니까? –
아마 접두어로 p. 훌륭하지는 않지만 기능적입니다. 자바 스타일의 getter와 setter보다 C# Properties를 선호하는 반면 적어도 Java에서는 명명 규칙이 더 쉽습니다. – Dathan
어쨌든 모든 것이 끝났을 때 자바는 더 간결 해집니다. 그래도 아마 언어보다는 도서관 일 것 같아. –
관련 https://stackoverflow.com/questions/570452/what-is-the-clscompliant-attribute-in-net –