Understanding Relationship Between CTS and CLS
CTS and CLS are parts of .NET CLR and are
responsible for type safety with in the code. Both allow cross language
communication and type safety. In this article I would like to expose
the relationship between these two.
CTS
CTS stands for Common Type System. It defines the rules which Common
Language Runtime follows when declaring, using, and managing types. The
common type system performs the following functions:
- It enables cross-language integration, type safety, and high-performance code execution.
- It provides an object-oriented model for implementation of many programming languages.
- It defines rules that every language must follow which runs under
.NET framework. It ensures that objects written in different .NET
Languages like C#, VB.NET, F# etc. can interact with each other.
CLS
CLS stands for Common Language Specification and it is a subset of
CTS. It defines a set of rules and restrictions that every language must
follow which runs under .NET framework. The languages which follows
these set of rules are said to be CLS Compliant. In simple words, CLS
enables cross-language integration.
For example, one rule is that you cannot use multiple
inheritance within .NET Framework. As you know C++ supports multiple
inheritance but; when you will try to use that C++ code within C#, it is
not possible because C# doesn’t supports multiple inheritance.
One another rule is that you cannot have members with same name with
case difference only i.e. you cannot have add() and Add() methods. This
easily works in C# because it is case-sensitive but when you will try to
use that C# code in VB.NET, it is not possible because VB.NET is not
case-sensitive.
Why CTS is Called Common Type System?
In .NET, every Data Type is internally represented by a class or
structure. All the classes and structures related to Data Types are
collectively known as CTS. As you know every language provides its own
keywords for Data Types but internally all the languages which run under
.NET framework use the classes and structures available in CTS.
For example, C# has int Data Type and VB.Net has Integer Data
Type. Hence a variable declared as int in C# or Integer in vb.net,
finally after compilation, use the same structure Int32 from CTS.
All the structures and classes available in CTS are common for all
.NET Languages and purpose of these is to support language independence
in .NET. Hence it is called CTS.
No comments:
Post a Comment