C#

C# Veri Tipleri

C# strongly-typed (sıkı sıkıya tipe bağlı) bir programlama dilidir. Bu, tamsayı, ondalık sayı, metin vb. gibi depolayacağı değerlerin türünü belirten bir değişkenin türünü bildirmemiz gerektiği anlamına gelir.

Aşağıdaki, farklı veri türlerinin değişkenlerini bildirir ve başlatır.

C# temel olarak veri türlerini iki türde sınıflandırır: Değer türleri ve Referans türleri.

  • Değer türleri, basit türleri (int, float, bool ve char gibi), enum türlerini, yapı türlerini ve Null yapılabilir değer türlerini içerir.
  • Referans türleri, sınıf türlerini, arabirim türlerini, temsilci türlerini ve dizi türlerini içerir.
C# Veri Tipleri

C#’da Önceden Tanımlanmış Veri Türleri (C# Veri Tipleri tablosu)

C#, önceden tanımlanmış bazı değer türlerini ve başvuru türlerini içerir. Aşağıdaki tabloda önceden tanımlanmış veri türleri listelenmektedir:

TürTanımıAralıkSon Ek
byte8-bit unsigned integer0 ile 255
sbyte8-bit signed integer-128 ile 127
short16-bit signed integer-32,768 ile 32,767
ushort16-bit unsigned integer0 ile 65,535
int32-bit signed integer-2,147,483,648
ile
2,147,483,647
uint32-bit unsigned integer0 ile 4,294,967,295u
long64-bit signed integer-9,223,372,036,854,775,808
ile
9,223,372,036,854,775,807
l
ulong64-bit unsigned integer0 ile 18,446,744,073,709,551,615ul
float32-bit Single-precision floating point type-3.402823e38 ile 3.402823e38f
double64-bit double-precision floating point type-1.79769313486232e308 ile 1.79769313486232e308d
decimal128-bit decimal type for financial and monetary calculations(+ or -)1.0 x 10e-28
ile
7.9 x 10e28
m
char16-bit single Unicode characterAny valid character, e.g. a,*, \x0058 (hex), or\u0058 (Unicode)
bool8-bit logical true/false valueTrue ile False
objectBase type of all other types.
stringA sequence of Unicode characters
DateTimeRepresents date and time0:00:00am 1/1/01
ile
11:59:59pm 12/31/9999

Yukarıdaki tabloda da görebileceğiniz gibi her bir veri tipi (string ve object hariç) değer aralığını içermektedir. Değer, veri tipinin izin verilen aralığının dışına çıkarsa derleyici bir hata verecektir. Örneğin, int veri türünün aralığı -2.147.483.648 ile 2.147.483.647’dir. Yani bu aralıkta olmayan bir değer atarsanız derleyici hata verecektir.

Long, Float, Double ve ondalık türdeki işaretsiz tam sayıların son eki sırasıyla u,l,f,d ve m eki olmalıdır.

.NET Tpileri ile Karşılaştırma

Önceden tanımlanmış veri türleri, .NET türü (CLR sınıfı) adlarının diğer adıdır. Aşağıdaki tabloda, önceden tanımlanmış veri türleri ve ilgili .NET sınıf adı için diğer adlar listelenmektedir.

Takma Ad.NET TipiTip
byteSystem.Bytestruct
sbyteSystem.SBytestruct
intSystem.Int32struct
uintSystem.UInt32struct
shortSystem.Int16struct
ushortSystem.UInt16struct
longSystem.Int64struct
ulongSystem.UInt64struct
floatSystem.Singlestruct
doubleSystem.Doublestruct
charSystem.Charstruct
boolSystem.Booleanstruct
objectSystem.ObjectClass
stringSystem.StringClass
decimalSystem.Decimalstruct
DateTimeSystem.DateTimestruct

Bu, ister int ister Int32 değişkeni tanımlayın, her ikisinin de aynı olduğu anlamına gelir.

Varsayılan değerler

Her veri türünün varsayılan bir değeri vardır. int tür 0, boolean false ve char varsayılan değer olarak ‘\0’ değerine sahiptir. Veri türünün varsayılan değerini veya C# 7.1’i atamak için default(typename) öğesini kullanır, varsayılan değişmez değeri kullanır.

Tür Dönüşümleri

Belirli veri türlerinin değerleri, C#’ta otomatik olarak farklı veri türlerine dönüştürülür. Buna örtük dönüştürme denir.

Yukarıdaki örnekte, bir i tamsayı değişkeninin değeri, bu dönüştürme işlemi C#’da önceden tanımlandığından, kayan nokta tipi f değişkenine atanmıştır.

Aşağıdaki, örtük bir veri türü dönüştürme tablosudur.

Örtülü Dönüştürme(Bu tipten)Bu tiplere
sbyteshort, int, long, float, double, decimal
byteshort, ushort, int, uint, long, ulong, float, double, decimal
shortint, long, float, double, or decimal
ushortint, uint, long, ulong, float, double, or decimal
intlong, float, double, or decimal.
uintlong, ulong, float, double, or decimal
longfloat, double, or decimal
ulongfloat, double, or decimal
charushort, int, uint, long, ulong, float, double, or decimal
floatDouble

int, uint, long veya ulong’dan float’a ve long veya ulong’dan double’a dönüştürmeler hassasiyet kaybına neden olabilir. Hiçbir veri türü örtük olarak char türüne dönüştürülmemiştir.

Ancak, tüm veri türleri örtük olarak diğer veri türlerine dönüştürülmez. Örneğin, int türü örtük olarak uint’e dönüştürülemez. Aşağıda gösterildiği gibi açıkça belirtilmelidir.

Yukarıdaki örnekte, i tamsayısı, parantez içinde (uint) uint belirtilerek açıkça uint’e dönüştürülür. Bu, bir tamsayıyı uint’e dönüştürecektir.

Yorum yap