Common Type System (CTS), Microsoft'un .NET Framework'te veri tipi tanımlarının ve bunların belirli değerlerinin bilgisayar belleğinde nasıl temsil edildiğini belirten bir standarttır. Farklı programlama dillerinde yazılan programların kolayca bilgi paylaşmasına olanak sağlamak amaçlanır. Programlama dillerinde kullanıldığı şekliyle bir veri tipi, bir değer kümesinin tanımı (örneğin, "0 ile 10 arasındaki tüm tam sayılar") ve bu değerler üzerinde izin verilen işlemler (örneğin, toplama ve çıkarma) olarak tanımlanabilir.
CTS, Ecma 335, "Common Language Infrastructure (CLI) I. Bölüm - VI"da yer almaktadır. CLI ve CTS, Microsoft ve .NET Framework standartlarını uygular.
Common Type System iki genel veri tipini destekler: Value Type ve Reference Type. Value type'larda bellekten veriye doğrudan yolla ulaşılırken, reference type'larda bellekteki başka bir nesne yoluyla değere ulaşılır. Yani reference type'larda belleğin tutulduğu adresler önem kazanır.
Aşağıdaki örnek, value type ile referance type arasındaki farkı göstermek için Visual Basic'te yazılmıştır.
Imports System Class Class1 Public Value As Integer = 0 End Class 'Class1 Class Test Shared Sub Main() Dim val1 As Integer = 0 Dim val2 As Integer = val1 val2 = 123 Dim ref1 As New Class1() Dim ref2 As Class1 = ref1 ref2.Value = 123 Console.WriteLine("Values: {0}, {1}", val1, val2) Console.WriteLine("Refs: {0}, {1}", ref1.Value, ref2.Value) End Sub 'Main End Class 'Test
Yukarıdaki örneğin çıktısı
Values: 0, 123 Refs: 123, 123